【发布时间】: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 配置)一切正常。请移步评论回复。