【问题标题】:How to configure ASP.NET Core 2 application with different url/port for different database如何为不同的数据库配置具有不同 url/端口的 ASP.NET Core 2 应用程序
【发布时间】:2019-07-08 16:46:39
【问题描述】:

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

  1. http://localhost:55001(使用 QA DB 连接)
  2. http://localhost:55002(使用生产数据库连接)

此方案适用于使用 Intranet Web 应用程序。一组用户将使用 Production 应用程序。另一组用户将使用 QA 或 Staging 应用程序。 这两个 urls/db-connections 必须在同一个应用程序中同时启用,以便拥有一个主应用程序(用于策略、维护和机器资源消耗目的)和两个不同的数据库。

我尝试的是配置两个 appsettings.json 文件:第一个 (appsettings.Release.json) 设置生产数据库连接字符串和一个 applicationUrl url/端口。第二个(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 可能不是我的问题的答案。此外,我必须正确配置启动和(也许)程序类来实现我正在寻找的东西。

在这一点上,非常感谢你们的任何建议、指导、代码 sn-p 或解决方案。

【问题讨论】:

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


    【解决方案1】:

    我认为您的问题基本上归结为如何为每个应用实例设置不同的 ASPNETCORE_ENVIRONMENT 值。部署 IIS 的最佳选择是在 web.config 的 &lt;aspNetCore&gt; 中添加 &lt;environmentVariables&gt; 部分:

    <aspNetCore ...>
        <environmentVariables>
            <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
        </environmentVariables>
    </aspNetCore>
    

    要在发布时为您自动处理,您需要为您的发布配置文件修改 .pubxml 并添加如下内容:

    <PropertyGroup>
        <EnvironmentName>Staging</EnvironmentName>
    </PropertyGroup>
    

    这将在发布时自动将相关的&lt;environmentVariables&gt; 设置添加到生成的 web.config 中。

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

    【讨论】:

    • 感谢 Chris,我能够使用您提到的解决方案配置应用程序,我可以看到它根据环境使用连接字符串。剩下的唯一问题是,我无法为每个设计的环境配置自定义 url,我猜我将无法做到这一点,因为我在 IIS 中托管应用程序并且 url 配置驻留在 IIS 中,或者我没有t 找到了正确的文档来实现它。
    • 是的。那部分是不可避免的。站点绑定在 IIS 中。
    • 我认为这会对我有所帮助。问题是关于不同的 appsettings.json 文件。但是我很惊讶地找到了关于 web.config 的答案。不知道那是怎么发生的。想知道这甚至是哪个 web.config
    猜你喜欢
    • 1970-01-01
    • 2016-07-11
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多