如何强制App Service从设置而不是从appsettings.json文件读取连接字符串?
我们尝试了“设置” /“应用程序设置” /“连接字符串”和“设置/配置(预览)/连接字符串”,但仍会继续读取上传的appsettings.json。
我们已使用Azure DevOps并尝试了Web一键发布。可能可以直接从发布设置(在VS中)进行手动发布和连接字符串替换。
我们将这种方法用于其他(非asp.net核心)网站,并且可以正常工作。
我检查了Asp.Net Core和Azure托管的教程,我相信我做对了吗?
我什至在哪里开始调试此东西?
EntityFramework在一个单独的项目中,我们在连接字符串中使用了带有自定义构造函数的依赖项注入,如果我手动设置appsettings.json文件,它可以很好地工作,但是我必须将其部署在多台服务器上,并且从代码或每次手动对这些东西都没有多大意义。而且我不想排除appsettings.json的自动部署,我只想在服务器上进行转换。
ConfigureServices
IConfigurationRoot configuration = new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory).AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();
string connectionString = configuration.GetConnectionString("DefaultConnection");
appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "xxx"
},
...
也许我读到的appsetting.json错误,并且Azure无法正确注入新的连接字符串?
答案 0 :(得分:1)
基于评论中的讨论,解决方案是使用通过IConfiguration
类构造函数提供的Startup
对象(仅在Core 2.x +中有效)。
例如:
private readonly IConfiguration _config;
public Startup(IConfiguration config)
{
_config = config;
}
然后您可以使用_config
来访问Startup
中的设置。