asp.net-core - 如何为不同的数据库配置具有不同 url/端口的 ASP.NET Core 2 应用程序
问题描述
我正在尝试在具有两个不同 url/端口的同一 IIS 服务器中配置 ASP.NET Core (2.1) 应用程序,每个 url/端口应使用不同的数据库连接,例如:
- http://localhost:55001(使用 QA DB 连接)
- 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 可能不是我的问题的答案。此外,我必须正确配置启动和(也许)程序类来实现我正在寻找的东西。
在这一点上,你们可能拥有的任何建议、指导、代码片段或解决方案都将不胜感激。
解决方案
我认为您的问题基本上归结为如何为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 中。
推荐阅读
- python - Checkmarx 反射型 XSS
- php - 如何比较日期并在php中调用函数
- sql - 参考问题
- python - 根据预定义的条件检查数据框是否包含某些列的空值
- python - 在 python 中读取 json 文件时出错 - AttributeError: 'str' object has no attribute 'decode'
- reactjs - react Route v4中是否有onChange的替换参数
- laravel - 在 Laravel 中使用 LIKE 查询数据库表
- c# - 为什么 DateTime 格式不使用“/”?
- scala - XGBoost4J - Scala 数据帧到稀疏 dmatrix
- docker - 如何在 Github 和 AWS 中创建自动部署到开发、登台和生产环境?