容器(Aznetcore 2.2)的Azure Web应用在启动时未读取Azure Appsettings值

时间:2019-01-23 16:56:44

标签: asp.net-core azure-web-app-service azure-container-service

我有一个适用于Azure中运行的容器的Web应用程序,我已经在本地使用本地appsettings文件。

一旦我部署到Azure,我希望容器从天蓝色设置中提取appsettings值。这些是通过AzureDevops设置的,在我检查门户网站时可以正确显示。

但是,一旦部署,该站点就不会从Azure提取appsettings值。它正在使用文件中的文件。我正在使用指定的双下划线名称。

我已经创建了一个测试控制器来输出appsettings值。这是测试视图输出的摘要:

Build version: 2019.1.23.1
Location: local
Database__DatabaseConnectionString: Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=application;Data Source=.
---
-------
Env vars: Key WEBSITE_AUTH_SIGNING_KEY Value ASDS*(&*&*(SDSD05C29
Key DOTNET_RUNNING_IN_CONTAINER Value true
Key WEBSITE_ROLE_INSTANCE_ID Value 0
Key Database__DatabaseConnectionString Value Server=tcp:servername01.database.windows.net,1433;Initial Catalog=application;Persist Security Info=False;User ID=applicationUser;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Key APPSETTING_Database__DatabaseConnectionString Value Server=tcp:servername01.database.windows.net,1433;Initial Catalog=application;Persist Security Info=False;User ID=applicationUser;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

可以看出,Database__DatabaseConnectionString应该由应用程序使用。但这不是。

这里可能是什么问题?根据aspnetcore文档,这应该是标准功能。

1 个答案:

答案 0 :(得分:0)

结果证明这是应用程序中的错误。有问题的控制器将注入的IOptions注入到构造函数中。不幸的是,其中一个控制器具有不同的行为,因为正在注入一个具体实例。由于未在Startup.cs中正确初始化此对象,因此具有将空值传递到构造函数的作用。

最后,找到空值,这意味着使用了默认的appsettings.json值。

已修复了上述错误(通过确保所有控制器使用相同的IOptions值),在启动时由应用程序正确拾取和使用了蔚蓝的appsettings值。