asp.net core 1 appsettings.production.json 不更新连接字符串

Posted

技术标签:

【中文标题】asp.net core 1 appsettings.production.json 不更新连接字符串【英文标题】:asp.net core 1 appsettings.production.json not updating connection strings 【发布时间】:2016-08-29 21:57:11 【问题描述】:

我有一个使用 .net core RC1 在 IIS 上运行的应用程序。我重新编写了应用程序,因为公司希望它在 .net core1 上,因为那是正式版本。

在我的 .net core RC1 应用程序中,我有 config.json 和 config.production.json,而在生产版本中,我只是包含了我想要覆盖的设置,比如连接字符串。效果很好。

在 .net core1 中,我有 appsettings.json 和 appsettings.production.json。但是,连接字符串似乎没有得到更新。它似乎使用了原始 appsettings.json 中的 localdb。

appsettings.json:


  "ConnectionStrings": 
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-DecisionEff-b32ae861-2422-4f88-839c-2a6d599fee45;Trusted_Connection=True;MultipleActiveResultSets=true"
  ,
  "Logging": 
    "IncludeScopes": false,
    "LogLevel": 
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    
  

appsettings.production.json:


    "ConnectionStrings": 
      "DefaultConnection": "Server=mydb.server;Database=DbName;User ID=User;Password=password;Trusted_Connection=False; Connection Timeout= 30;"
    

在我的启动文件中,我确实将其设置为寻找生产:

var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.env.EnvironmentName.json", optional: true);

以上是根据我在 RC1 中所做的工作建模的。是否有其他更改导致连接字符串未更新?如果我将生产数据库连接字符串放在 appsettings.json 文件中,那么应用程序在我们的生产服务器上运行良好。所以它不会从 appsettings.production.json 文件中提取设置。我知道它正在正确读取环境,因为我正在打印它并且它符合预期。

您如何在 .net core 1 Web 应用程序中提供不同的开发和生产数据库设置?

任何帮助将不胜感激。我显然忽略了一些东西。

更新: 当我在本地机器上运行它时,将 ASPNETCORE_ENVIRONMENT 设置为生产,它使用正确的连接字符串。因此,Web 应用程序在生产环境中看到了正确的环境,并且可以使用连接字符串。在构建过程中是否需要配置一些东西来发送不同的环境设置?或者有没有办法从环境的 .json 文件中打印不同的设置?

更新 2: 我注意到,当我发布应用程序时,只有 appsettings.json 仅具有 localdb 连接。似乎没有生成任何 appsettings.production.json 文件。现在应该在构建过程中指定哪些地方会遇到这些不同的设置?

【问题讨论】:

可能你的问题和这个问题有关***.com/questions/37858312/… 就是这样。这与 RC1 模板不同。在您指定排除之前。 【参考方案1】:

您可能忘记设置设置环境的环境变量。您必须将ASPNETCORE_ENVIRONMENT 设置为Production

【讨论】:

维克多谢谢。没有。我确实有那个设置,并且应用程序正在正确检测环境,因为我正在打印它。在 Dev 上,我使用 env.IsDevelopment、env.IsProduction 打印 dev 和 Prod。

以上是关于asp.net core 1 appsettings.production.json 不更新连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

从 Asp.Net Core AppSettings 获取值

ASP.NET Core读取AppSettings

asp.net core 1 appsettings.production.json 不更新连接字符串

Asp.Net Core 进阶 —— 读取appsettings.json

ASP.NET CORE读取appsettings.json的配置

AppSettings.json 用于 ASP.NET Core 中的集成测试