Azure无法访问存储在应用程序服务配置中的连接字符串

时间:2019-08-22 09:54:03

标签: c# azure asp.net-core azure-sql-database azure-configuration

我在Azure中有一个应用程序服务,它作为我正在设计的系统的API。由于该API负责直接访问数据库,因此我显然不想在源代码中存储连接字符串,因此将其存储在Azure仪表板上的App Service的“配置”中的“连接字符串”部分中。

我的代码几乎是此>> https://github.com/medhatelmasry/JwtAuthentication/blob/master/JwtAuthentication/Startup.cs的副本,但我要检查它在其中运行的当前配置(调试,发行等),以便在Visual Studio中本地调试时Studio我正在使用localdb连接(硬编码)。我有一个appsettings.json文件,但其中没有连接字符串,只有JWT身份验证和日志记录的设置。

被称为:

services.AddDbContext<ApplicationDbContext>(
            option => option.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

我在Azure中得到以下内容:

Unhandled Exception: System.ArgumentNullException: Value cannot be null
Parameter name: connectionString

在过去的一周里,我一直在愚蠢地工作,试图使它正常运转,并且一直在圈子里兜风,我一直在发疯。多年来,Google和StackOverflow的结果好坏参半,因为不同版本的Azure和ASP.NET Core有不同的答案。就像它根本无法访问Azure配置。请参考上面的链接,因为这与我的设置相同,并且基于.NET版本和类型(核心或框架)有很多不同的答案。

编辑:请阅读我的问题,连接字符串未存储在项目的appsettings.json文件中,而是存储在Azure中,如下所示(我将连接字符串名称空白,但它们确实与代码中的内容匹配,不,它不是“ DefaultConnection”):

Azure Connection Strings

1 个答案:

答案 0 :(得分:1)

确保变量的命名有效。当位于App Service刀片中时,可以从SCM站点的“开发工具”->“高级工具”中查看实际的环境变量。

通过App Service的门户网站“配置”部分添加的名称为“ DefaultConnection”的连接字符串在环境变量中看起来类似于SQLCONNSTR_DefaultConnection。要在代码中访问它,您需要执行configuration.GetConnectionString("DefaultConnection")

有关设置应用程序服务配置值的详细信息,请参见this Microsoft blog