如何为不同的数据库配置具有不同URL /端口的ASP.NET Core 2应用程序

时间:2019-07-08 16:46:39

标签: asp.net-core iis app-config

我正在尝试在具有两个不同URL /端口的同一IIS服务器中配置ASP.NET Core(2.1)应用程序,每个URL /端口应使用不同的数据库连接,例如:

  1. http://localhost:55001(使用质量检查数据库连接)
  2. http://localhost:55002(使用生产数据库连接)

此方案用于使用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可能不是解决我的问题的方法。另外,我还必须正确配置启动类和(也许)程序类,以实现所需的功能。

到目前为止,您可能会喜欢的任何建议,指导,代码段或解决方案都将不胜感激。

1 个答案:

答案 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中。

有关更多信息,请参见:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2#configuration-with-webconfig