西雅圖時間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 訪問
文章列表