生产环境使用不同的connectionString
Use different connectionString in production environment
我是 Web 开发的新手,所以这是我第一次尝试在不同的环境中工作。
因此,在我部署在 Azure 上的 WebApp 中,我想为我的本地数据库使用一个 connectionString,当我在本地开发环境中工作时,当我部署它时,它应该使用另一个数据库和另一个 connectionString。
我看到我的 Asp.Net Core 项目中有两个文件。 “appsettings.json”和“appsettings.Development.json”。如果我理解正确,如果我在开发环境中工作,app.dev.json 应该覆盖 app.json 中的设置。但事实并非如此。当我调试应用程序时,为了真正确保环境设置为开发,它仍然使用 appsettings.json.
您的 Multiple Configuration Files
可能是正确的。 appsettings.json
是默认配置文件,您可以声明任何包含 Development
和 Production
的内容。合并模式将为 appsettings.{Environment}.json
,然后 所有匹配的键将替换 appsettings.json 中的所有键。请记住名称 Environment
应与要使用的 ASPNETCORE_ENVIRONMENT
匹配。在你的情况下,app.dev.json
所以你的环境应该是 dev
(区分大小写)而不是 Development
.
例如:我们有一个默认的`appsettings.json
{
"ConfigurationString": "mongodb://localhost:27017",
"MongoOptions": {
"AllowWireUp": true,
"AutoConnect": true
}
}
然后你想在 Development
工作,你创建 appsettings.Development.json
内容
{
"ConfigurationString": "mongodb://192.168.1.1:27017",
"MongoOptions": {
"AllowWireUp": false
}
}
稍后当您 运行 与 Development
时,您将获得合并文件
{
"ConfigurationString": "mongodb://192.168.1.1:27017",
"MongoOptions": {
"AllowWireUp": false
}
}
重要:您会看到 MongoOptions.AutoConnect
在 Development
中是 false
因为 .NET Core 会根据一级密钥合并两个文件合并嵌套。这意味着 appsettings.Development.json
中的 MongoOptions
将替换整个 appsettings.json
有办法做到这一点。我猜你正在使用 Azure 应用程序服务?如果是,请遵循这些步骤
- 在您的项目中创建多个应用程序设置文件。 (dev/staging/uat/prod)
- 这些文件名应该是appsettings.Development.jsonappsettings.uat.json和appsettings.Production.json
- 每个文件都应该包含自己的配置。
- 然后在 azure 中转到您的应用程序服务 > 配置 > 应用程序设置,在 ASPNETCORE_ENVIRONMENT 中的值字段中添加您的应用程序设置 json 文件所需的前缀
- 重启应用服务。它现在应该可以工作了
我是 Web 开发的新手,所以这是我第一次尝试在不同的环境中工作。
因此,在我部署在 Azure 上的 WebApp 中,我想为我的本地数据库使用一个 connectionString,当我在本地开发环境中工作时,当我部署它时,它应该使用另一个数据库和另一个 connectionString。
我看到我的 Asp.Net Core 项目中有两个文件。 “appsettings.json”和“appsettings.Development.json”。如果我理解正确,如果我在开发环境中工作,app.dev.json 应该覆盖 app.json 中的设置。但事实并非如此。当我调试应用程序时,为了真正确保环境设置为开发,它仍然使用 appsettings.json.
您的 Multiple Configuration Files
可能是正确的。 appsettings.json
是默认配置文件,您可以声明任何包含 Development
和 Production
的内容。合并模式将为 appsettings.{Environment}.json
,然后 所有匹配的键将替换 appsettings.json 中的所有键。请记住名称 Environment
应与要使用的 ASPNETCORE_ENVIRONMENT
匹配。在你的情况下,app.dev.json
所以你的环境应该是 dev
(区分大小写)而不是 Development
.
例如:我们有一个默认的`appsettings.json
{
"ConfigurationString": "mongodb://localhost:27017",
"MongoOptions": {
"AllowWireUp": true,
"AutoConnect": true
}
}
然后你想在 Development
工作,你创建 appsettings.Development.json
内容
{
"ConfigurationString": "mongodb://192.168.1.1:27017",
"MongoOptions": {
"AllowWireUp": false
}
}
稍后当您 运行 与 Development
时,您将获得合并文件
{
"ConfigurationString": "mongodb://192.168.1.1:27017",
"MongoOptions": {
"AllowWireUp": false
}
}
重要:您会看到 MongoOptions.AutoConnect
在 Development
中是 false
因为 .NET Core 会根据一级密钥合并两个文件合并嵌套。这意味着 appsettings.Development.json
中的 MongoOptions
将替换整个 appsettings.json
有办法做到这一点。我猜你正在使用 Azure 应用程序服务?如果是,请遵循这些步骤
- 在您的项目中创建多个应用程序设置文件。 (dev/staging/uat/prod)
- 这些文件名应该是appsettings.Development.jsonappsettings.uat.json和appsettings.Production.json
- 每个文件都应该包含自己的配置。
- 然后在 azure 中转到您的应用程序服务 > 配置 > 应用程序设置,在 ASPNETCORE_ENVIRONMENT 中的值字段中添加您的应用程序设置 json 文件所需的前缀
- 重启应用服务。它现在应该可以工作了