Azure App Service上的ASP.NET Core无法从应用程序设置中读取连接字符串

时间:2019-03-10 09:34:26

标签: asp.net azure .net-core

如何强制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无法正确注入新的连接字符串?

1 个答案:

答案 0 :(得分:1)

基于评论中的讨论,解决方案是使用通过IConfiguration类构造函数提供的Startup对象(仅在Core 2.x +中有效)。

例如:

private readonly IConfiguration _config;

public Startup(IConfiguration config)
{
    _config = config;
}

然后您可以使用_config来访问Startup中的设置。