文章出處

西雅圖時間5月10日,微軟在 Build 2017 大會上發布了 ASP.NET Core 2.0 Preview 1 ( 詳見 Announcing ASP.NET 2.0.0-Preview1 and Updates for .NET Web Developers )。

以下是我關注的、并且經過自己實際驗證的貼心的新特性:

1)Microsoft.AspNetCore.All —— 1包攜10包,省力又省心

使用 ASP.NET Core 2.0 只需要安裝一個 NuGet 組合包 —— Microsoft.AspNetCore.All,發布時會自動排除沒有用到的包。

2)WebHost.CreateDefaultBuilder() —— 1行替10行,配置更簡潔

ASP.NET Core 2.0 中的 Prgram.cs :

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

上面的 1 行 WebHost.CreateDefaultBuilder(args) 取代了 ASP.NET Core 1.x 中的 10+ 行代碼(Program.cs + Startup.cs)。

ASP.NET Core 1.x 中的 Program.cs :

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

ASP.NET Core 1.x 中的 Startup.cs:

public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public IConfigurationRoot Configuration { get; }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();            
    }
}

對應的 ASP.NET Core 2.0 中的 Startup.cs :

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
    }
}

3)LoggerFactory.AddFilter(IDictionary<string, LogLevel> filter) 

ASP.NET Core 2.0 中通過代碼配置日志過濾(Program.cs):

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureLogging(factory =>
            {
                factory.UseConfiguration(null);
                factory.AddFilter(
                    new Dictionary<string, LogLevel>
                    {
                        { "Micrsoft",  LogLevel.Debug }
                    });
                factory.AddConsole();
            })
            .UseStartup<Startup>()
            .Build();
}

或者

public static class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .ConfigureLogging(factory =>
            {
                factory.AddConsole();
                factory.AddFilter("Console", level => level >= LogLevel.Information);
            })
            //...
    }
}

ASP.NET Core 1.x 中(Startup.cs):

loggerFactory.WithFilter(new FilterLoggerSettings
{
    { "Microsoft", LogLevel.Debug }
});

4)appsettings.json 中日志配置的變化

ASP.NET Core 2.0 中的日志配置如下,可直接在配置文件中根據 logging provider 配置對應的日志級別:

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }
}

ASP.NET Core 1.x 中除了在配置文件中進行配置,還需要在代碼中進行配置。

appsettings.json

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

Startup.cs

loggerFactory.AddConsole(Configuration.GetSection("Logging"));

5)Razor Pages

通過 Razor Pages ,只需 View,無需 Controller ,就可以直接訪問 。

比如下面的Index.cshtml,直接就可以通過 http://localhost:5000/index 訪問


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()