ASP.NET Core通用主机的系统配置

雪幕拉开,飘然而至分外美妙,初起便显现出意境;雪落十分,然间有种喜悦在心间荡漾,纷飞飘扬尽享每一刻青春的激情;飞舞的雪花,感受芬芳的韵味,迷人心脾围绕在身旁;耳畔,时常想有沙沙的声音那样的动听,百听不厌,着迷在这一刻升起动人心怀的旋律。

ASP.NET Core 2.0 中的WebHost(实现IWebHost的基类)是用于为进程提供 HTTP 服务器功能的基础结构项目,例如,如果正在实现 MVC Web 应用或 Web API 服务。它提供 ASP.NET Core 中所有新的基础结构优点,使用户能够使用依赖关系注入,在请求管道中插入中间件等,并精确地将这些IHostedServices用于后台任务。

.NET Core 2.1 中引入了Host(实现IHost的基类)。它能让用户拥有与WebHost相似的基础结构,使用它我们可以获取和Asp.net core一样的框架功能(依赖项注入、日志、配置、托管服务等),如果我们编写一个服务的时候,它提供了一个非常好用的框架。一个基本的示例代码如下:

public static async Task Main(string[] args)
{
    var host = new HostBuilder().Build();
    await host.RunAsync();
}

主要有如下两个步骤

  • 通过HostBuilder生成一个Host

  • 指向Host的Run函数运行主机

前面的代码只有一个空环境,要实现依赖项注入、日志、配置、托管服务等功能,还需要进一步的配置,本文的这里就简单的介绍一下通用主机的配置方法。

系统配置

系统配置有两个函数ConfigureHostConfiguration和ConfigureAppConfiguration

hostBuilder.ConfigureHostConfiguration(configHost =>
{
    configHost.SetBasePath(Directory.GetCurrentDirectory());
    configHost.AddJsonFile("hostsettings.json", optional: true);
    configHost.AddEnvironmentVariables(prefix: "PREFIX_");
    configHost.AddCommandLine(args);
});

这两个函数使用比较类似,它们的关系是主机配置用于初始化 IHostingEnvironment,以供在应用的构建过程中使用。

依赖关系注入

通用主机集成了DI框架,如果要使用DI框架,则需要调用ConfigureServices函数极限依赖关系注入:

hostBuilder.ConfigureServices((context, services) =>
{
    services.AddScoped<MyService>();
});

配置日志

我们可以通过在ConfigureServices中通过DI框架配置日志系统,但HostBuilder单独提供了一个配置日志的接口ConfigureLogging:

hostBuilder.ConfigureLogging((hostContext, configLogging) =>
{
    configLogging.AddConsole();
    configLogging.AddDebug();
});

它内部实际上依然是通过DI框架配置的日志系统。

通用配置

除了通过new一个HostBuilder外,系统还提供了一个创建HostBuilder的方法。

Host.CreateDefaultBuilder()

它的内部也是调用HostBuilder的,但他提供了一般常用的选项,具体包括:

  • 将内容根设置为由Directory.GetCurrentDirectory返回的路径。

  • 通过以下对象加载主机配置:

  • 前缀为DOTNET_的环境变量。(例如,DOTNET_ENVIRONMENT)。

  • 命令行参数。

  • 按以下顺序加载应用配置:

    • appsettings.json。

    • appsettings.{Environment}.json。

    • 应用在使用入口程序集的Development环境中运行时的机密管理器。

    • 环境变量。

    • 命令行参数。

  • 配置控制台和调试输出的日志记录。日志记录包含 appsettings.json 或 appsettings.{Environment}.json 文件的日志记录配置部分中指定的日志筛选规则。

  • 如果应用环境为"开发",请将ServiceProviderOptions.ValidateScopes设为true。有关详细信息,请参阅作用域验证。

也就是说,它基本上提供了我们所常用的大部分功能,并且它返回的也是一个HostBuilder,我们还可以在它的基础上接着配置,实现我们系统中的特有功能

本文ASP.NET Core通用主机的系统配置到此结束。业精于勤而荒于嬉,行成于思而毁于随。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
Ubuntu16.04系统配置.net core环境

ASP.NET轻量级MVC框架Nancy的基本用法

使用grpcui测试ASP.NET core的gRPC服务

ASP.NET Core中的对象池介绍

asp.net中MVC的处理流程详解