我在生产环境中有一个应用程序,使用在 IIS 上运行的 .net core RC1。我重新编写了该应用程序,因为该公司希望将其放在 .net core1 上,因为那是正式版本。
在我的 .net core RC1 应用程序中,我有 config.json 和 config.Production.json,在生产版本中,我只是包含了我想要覆盖的设置,例如连接字符串。效果很好。
在 .net core1 中,我有 appsettings.json 和 appsettings.production.json。但是,连接字符串似乎没有更新。它似乎使用原始appsettings.json中的localdb。
应用程序设置.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"
}
}
}
应用程序设置.生产.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 应用程序中提供不同的开发和生产数据库设置?
任何帮助,将不胜感激。我显然忽略了一些事情。
UPDATE:当我在本地计算机上运行此程序并将 ASPNETCORE_ENVIRONMENT 设置为 Production 时,它使用正确的连接字符串。因此,Web 应用程序在生产中看到了正确的环境,并且可以使用连接字符串。在构建过程中是否必须配置某些内容才能发送不同的环境设置?或者有没有办法可以打印 .json 文件中环境的不同设置?
更新2:我注意到,当我发布应用程序时,只有 appsettings.json 仅具有 localdb 连接。似乎没有生成任何 appsettings.product.json 文件。现在在构建过程中是否需要指定一些地方来应对这些不同的设置?