我正在尝试在具有两个不同URL /端口的同一IIS服务器中配置ASP.NET Core(2.1)应用程序,每个URL /端口应使用不同的数据库连接,例如:
此方案用于使用Intranet Web应用程序。一组用户将使用生产应用程序。另一组用户将使用“质量检查”或“分期”应用程序。 必须同时在同一应用程序中启用这两个url / db-connections ,以便拥有一个主应用程序(出于策略,维护和机器资源消耗的目的)和两个不同的数据库。
我尝试配置两个appsettings.json文件:第一个(appsettings.Release.json)设置生产数据库连接字符串和一个applicationUrl url / port。第二个(appsettings.QA.json)定义了不同的数据库连接字符串和不同的applicationUrl。
appsettings.Release.json:
{
"ConnectionStrings": {
"default": {
"ConnectionString": "<production-connection-string>",
"ProviderName": "Oracle.ManagedDataAccess.Client"
}
},
"applicationUrl": "https://localhost:55001",
...
}
appsettings.QA.json:
{
"ConnectionStrings": {
"default": {
"ConnectionString": "<qa-connection-string>",
"ProviderName": "Oracle.ManagedDataAccess.Client"
}
},
"applicationUrl": "https://localhost:55002",
...
}
现在我有点迷失了,我需要实现的下一个配置设置令人困惑,对我来说还不清楚。我什至不知道我要实现的目标是否可行或可以接受。 如果我为每个appsettings [environment / scenario] .json定义一个ASPNETCORE_ENVIRONMENT变量值,那么我不能同时使用此变量的两个值吗?
因此,我认为设置和使用ASPNETCORE_ENVIRONMENT可能不是解决我的问题的方法。另外,我还必须正确配置启动类和(也许)程序类,以实现所需的功能。
到目前为止,您可能会喜欢的任何建议,指导,代码段或解决方案都将不胜感激。
答案 0 :(得分:0)
我认为您的问题基本上可以归结为如何为每个应用实例为ASPNETCORE_ENVIRONMENT
设置不同的值。 IIS部署的最佳选择是在web.config的<environmentVariables>
中添加<aspNetCore>
部分:
<aspNetCore ...>
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
</environmentVariables>
</aspNetCore>
要在发布时自动为您处理,您需要修改发布资料的.pubxml
并添加以下内容:
<PropertyGroup>
<EnvironmentName>Staging</EnvironmentName>
</PropertyGroup>
这将在发布时自动将相关的<environmentVariables>
设置添加到生成的web.config中。