繁体   English   中英

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

[英]ASP.NET Core on Azure App Service not reading Connection string from Application settings

如何强制App Service从设置而不是从appsettings.json文件读取连接字符串?

我们尝试了“设置” /“应用程序设置” /“连接字符串”和“设置/配置(预览)/连接字符串”,但仍会继续读取上传的appsettings.json。

我们已使用Azure DevOps并尝试了Web一键发布。 可能可以直接从发布设置(在VS中)进行手动发布和连接字符串替换。

我们将这种方法用于其他(非asp.net核心)网站,并且可以正常工作。

我已经检查了Asp.Net Core和Azure Hosting的教程,我相信我所做的一切对吗?

我什至从哪里开始调试这个东西?

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

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

因此,例如:

private readonly IConfiguration _config;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM