• ASP.NET Core 2.0 Preview 1 中贴心的新特性


    西雅图时间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 访问

  • 相关阅读:
    Android JNI和NDK学习(04)--NDK调试方法(转)
    Android JNI和NDK学习(03)--动态方式实现JNI(转)
    Android JNI和NDK学习(02)--静态方式实现JNI(转)
    Android JNI和NDK学习(01)--搭建NDK开发环境(转)
    C++语言基础(7)-inline内联函数
    C++语言基础(6)-const 关键字
    C++语言基础(5)-this和static关键字
    红黑树:个人理解与Python实现
    最小堆实现优先队列:Python实现
    二叉查找树:Python实现
  • 原文地址:https://www.cnblogs.com/dudu/p/6842180.html
Copyright © 2020-2023  润新知