生产环境使用不同的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 是默认配置文件,您可以声明任何包含 DevelopmentProduction 的内容。合并模式将为 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.AutoConnectDevelopment 中是 false 因为 .NET Core 会根据一级密钥合并两个文件合并嵌套。这意味着 appsettings.Development.json 中的 MongoOptions 将替换整个 appsettings.json

有办法做到这一点。我猜你正在使用 Azure 应用程序服务?如果是,请遵循这些步骤

  1. 在您的项目中创建多个应用程序设置文件。 (dev/staging/uat/prod)
  2. 这些文件名应该是appsettings.Development.jsonappsettings.uat.jsonappsettings.Production.json
  3. 每个文件都应该包含自己的配置。
  4. 然后在 azure 中转到您的应用程序服务 > 配置 > 应用程序设置,在 ASPNETCORE_ENVIRONMENT 中的值字段中添加您的应用程序设置 json 文件所需的前缀
  5. 重启应用服务。它现在应该可以工作了