如何为.NET Core 3.0 Worker服务设置环境?

时间:2019-10-06 04:53:39

标签: .net-core

这是我尝试过的:

  1. 我对Host.CreateDefaultBuilder的来源一目了然,并首先将环境变量DOTNET_Environment设置为“ Production”。失败了。
  2. 因此,我尝试了经典的ASPNETCORE_ENVIRONMENT。不。
  3. 然后我尝试将hostsettings.json添加到执行项目的根目录中:
{
    "Environment": "Production"
}

娜达。

为了使用appsettings.Production.json文件,您到底如何指定生产机器?

1 个答案:

答案 0 :(得分:0)

没关系,我知道了。我很笨。

首先,检查Properties/launchSettings.json文件中“ DOTNET_ENVIRONMENT”的值。对于包括我在内的大多数人来说,这可能就足够了。

实际上,默认情况下,它还会在项目根目录中查找hostsettings.json文件。就我而言,它只是被launchSettings环境变量声明所覆盖。

但是,如果要使用我在问题中提到的JSON方法,但使用默认文件名或位置以外的其他名称,则必须在ConfigureHostConfiguration链中调用IHostBuilder并添加文件。

像这样:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureHostConfiguration(
            builder =>
            {
                builder.AddJsonFile("abitraryFileName.json");
            })
        .ConfigureServices(
            (hostContext, services) =>
            {
                services.AddHostedService<Worker>();
                services.Configure<Settings>(
                    hostContext.Configuration.GetSection("Settings"));
            });

确实确实默认将前缀“ DOTNET_”而不是“ ASPNETCORE_”作为前缀,因此请确保在生产机器/ VM /服务上都设置了两者。