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 1 appsettings.production.json 不更新连接字符串
Asp.Net Core 进阶 —— 读取appsettings.json