AspNet Core 2.0 Windows服务和唯一的ASPNETCORE_ENVIRONMENT变量

时间:2018-06-20 22:52:10

标签: asp.net-core windows-services environment-variables

我在服务器A上执行了ASPNET Core 2.0 Windows Service。它是使用以下命令创建的:

sc create...

服务器A具有系统ASPNETCORE_ENVIRONMENT =“ Staging”。 Windows服务使用appsettings.Staging.json进行设置。

我想为演示目的安装一个重复的Windows服务,该服务需要指向appsettings.demo.json进行设置。

如何使用唯一的ASPNETCORE_ENVIRONMENT =“ Demo”执行ASPNET Core 2.0演示Windows服务?

谢谢。

1 个答案:

答案 0 :(得分:2)

我遇到了这个确切的问题,您实际上可以通过传递命令行参数来设置环境。您将需要像这样创建服务:

sc create MyDemoService binPath= "C:\MyDemoService.exe --environment Demo"

这将传入一个参数,您可以在构建WebHost时在Program.cs的Main函数中使用该参数。像这样:

var builder = new ConfigurationBuilder();
builder.AddCommandLine(args);
var config = builder.Build();

var host = new WebHostBuilder()
    .UseConfiguration(config)
    ...

在我访问应用程序设置时。在我应用程序的其他位置,{EnvName} .json我需要将IHostingEnvironment注册为单例,然后我只能读取该服务的环境名称而不必设置ASPNETCORE_ENVIRONMENT