【发布时间】:2018-04-05 13:54:27
【问题描述】:
我使用PeterKottas.DotNetCore.WindowsService nugget 将 .NET Core 2.0 应用程序作为服务托管,到目前为止一切正常。
我的问题是该服务将在同一台服务器上有多个实例,根据配置文件运行不同的东西。
您可能会问,为什么不让相同的服务同时兼顾两者。因为我只有 1 台开发服务器用于所有服务,而生产中每个站点有 1 台服务器,所以必须拆分。
例子:
- 服务实例 1 为站点 US 运行文件擦除器;
- 服务实例 2 为站点 CA 运行文件擦除器;
实例 1 应加载“appsettings.US.json”和实例 2“appsettings.CA.json”。 “ASPNETCORE_ENVIRONMENT”环境变量不是解决方案,因为它是全局的并且会影响两个服务(在开发服务器中)。我目前有这个在本地运行:
string environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false, true)
.AddJsonFile($"appsettings.{environmentName}.json", true, true)
.AddEnvironmentVariables();
两个站点也在同一个开发服务器中,但这很好,因为它是一个 Web.config 为每个特定站点在 IIS 中设置变量。我想知道服务是否有类似的东西,因为这对我的问题来说是一个很好的解决方案,但我一直在用头撞墙,什么也没找到。
其他可能的解决方案是仅发布正确的配置,然后将其重命名,以便将“appsettings.US.json”称为“appsettings.json”,而我只会加载它,但我所有的尝试都在这失败了,它似乎不尊重发布配置文件,只是做了我在文件属性上设置的内容(复制到输出选项)。
我是否可能在发布配置文件中做错了什么,是否有任何“环境变量”服务器特定类型的东西,或者是否有任何其他我不记得的解决方案?
【问题讨论】:
标签: c# asp.net configuration app-config asp.net-core-2.0