Azure 无法访问存储在应用服务配置中的连接字符串
Azure cannot access connection string stored in app service configuration
我在 Azure 中有一个应用程序服务作为我正在设计的系统的 API。由于 API 负责直接访问数据库,我显然不想在源代码中存储连接字符串,因此将其存储在 Azure 仪表板上应用服务配置中的连接字符串部分。
我的代码几乎是此 >> https://github.com/medhatelmasry/JwtAuthentication/blob/master/JwtAuthentication/Startup.cs 的副本,除了我检查当前配置它是 运行 在(调试、发布等)中所以当我在 Visual 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 和 Whosebug 的结果喜忧参半,因为多年来不同版本的 Azure 和 ASP.NET Core 给出了不同的答案。就像它根本无法访问 Azure 配置一样。请参考上面的 link,因为这与我的设置相同,并且根据 .NET 版本和类型(核心或框架)有许多不同的答案。
编辑:请阅读我的问题,连接字符串未存储在项目的 appsettings.json 文件中,它存储在 Azure 中,如下所示(我已将连接字符串名称设为空白,但它们与在代码中,不,它不是 "DefaultConnection"):
确保变量的命名有效。在应用服务边栏选项卡中,您可以从 SCM 站点的开发工具 -> 高级工具中查看实际环境变量。
通过名称为 "DefaultConnection" 的应用服务的门户配置部分添加的连接字符串在环境变量中将类似于 SQLCONNSTR_DefaultConnection。然后,要在代码中访问它,您可以执行 configuration.GetConnectionString("DefaultConnection")
有关设置应用服务配置值的详细信息,请参阅this Microsoft blog。
我知道它是旧的,但将来可能对某些人有用。我的问题是由 AppService 'Connection Strings' 中的连接字符串引起的。通过将它作为一个值放在 'Application Settings' 中,它工作正常。我猜是因为适用于连接字符串值的加密。
我在 Azure 中有一个应用程序服务作为我正在设计的系统的 API。由于 API 负责直接访问数据库,我显然不想在源代码中存储连接字符串,因此将其存储在 Azure 仪表板上应用服务配置中的连接字符串部分。
我的代码几乎是此 >> https://github.com/medhatelmasry/JwtAuthentication/blob/master/JwtAuthentication/Startup.cs 的副本,除了我检查当前配置它是 运行 在(调试、发布等)中所以当我在 Visual 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 和 Whosebug 的结果喜忧参半,因为多年来不同版本的 Azure 和 ASP.NET Core 给出了不同的答案。就像它根本无法访问 Azure 配置一样。请参考上面的 link,因为这与我的设置相同,并且根据 .NET 版本和类型(核心或框架)有许多不同的答案。
编辑:请阅读我的问题,连接字符串未存储在项目的 appsettings.json 文件中,它存储在 Azure 中,如下所示(我已将连接字符串名称设为空白,但它们与在代码中,不,它不是 "DefaultConnection"):
确保变量的命名有效。在应用服务边栏选项卡中,您可以从 SCM 站点的开发工具 -> 高级工具中查看实际环境变量。
通过名称为 "DefaultConnection" 的应用服务的门户配置部分添加的连接字符串在环境变量中将类似于 SQLCONNSTR_DefaultConnection。然后,要在代码中访问它,您可以执行 configuration.GetConnectionString("DefaultConnection")
有关设置应用服务配置值的详细信息,请参阅this Microsoft blog。
我知道它是旧的,但将来可能对某些人有用。我的问题是由 AppService 'Connection Strings' 中的连接字符串引起的。通过将它作为一个值放在 'Application Settings' 中,它工作正常。我猜是因为适用于连接字符串值的加密。