【问题标题】:ASP.NET Core on Azure App Service not reading Connection string from Application settingsAzure 应用服务上的 ASP.NET Core 未从应用程序设置中读取连接字符串
【发布时间】:2019-03-10 09:34:26
【问题描述】:

如何强制应用服务从设置中读取连接字符串,而不是从 appsettings.json 文件中读取?

我们已经尝试过设置/应用程序设置/连接字符串和设置/配置(预览)/连接字符串,但它一直从上传的 appsettings.json 读取。

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

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

我查看了有关 Asp.Net Core 和 Azure Hosting 的教程,我相信我做的一切都正确?

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

EntityFramework 在一个单独的项目中,我们使用依赖注入和连接字符串的自定义构造函数,如果我手动设置 appsettings.json 文件,它就可以正常工作,但我必须将它部署在多个服务器上,并且每次从代码或手动对这些东西都没有多大意义。而且我不想排除 appsettings.json 的自动部署,我只想在服务器上对其进行转换。

配置服务

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

【问题讨论】:

  • 您需要将环境变量添加到配置生成器。如果您使用的是 ASP.NET Core 2.x 那么您不需要自己构建配置,您可以在 Startup 构造函数中获取它作为 IConfiguration。
  • 谢谢! >> 如果您使用的是 ASP.NET Core 2.x 那么您不需要自己构建配置,您可以在 Startup 构造函数中获取它作为 IConfiguration。 这就是问题所在:|如果我手动构建配置,Azure 无法注入连接字符串。但是,如果我使用公共启动中的 IConfiguration(IConfiguration 配置)一切正常。请移步评论回复。

标签: asp.net azure .net-core


【解决方案1】:

根据 cmets 中的讨论,解决方案是使用通过 Startup 类构造函数提供的 IConfiguration 对象(这只适用于 Core 2.x+)。

例如:

private readonly IConfiguration _config;

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

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

【讨论】:

  • 你能补充一些细节吗? :) 您是否尝试将 IConfiguration 注入您的 Startup 类构造函数并出现错误?
  • 我有这个代码>>github.com/medhatelmasry/JwtAuthentication/blob/master/…。几乎完全复制,唯一的区别是我添加了一个 #if 块来检查本地 VS 配置(调试/发布),如果它是调试的,它将加载一个硬编码的本地数据库字符串。我在解决方案中还有一个 appsettings.json 文件,其中包含 JWT 身份验证所需的数据。如果我能把它放在别的地方,我很高兴能摆脱它。
  • 我已经到了考虑付费求助的地步了,因为这严重阻碍了我。这是我的 API,一切都需要从中请求数据,没有它,一切都将无法工作。那个,而且我每天早上几乎都熬夜到凌晨 2 点,同时我还在做一份全职工作,试图解决这个问题,我现在真的很累。
  • 您能否创建一个包含所有详细信息的新问题并将链接发送到此处?
  • 我在这里创建了一个问题>>stackoverflow.com/questions/57606636/…
猜你喜欢
  • 2021-02-15
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 2015-04-18
相关资源
最近更新 更多