"Connection strings" 在 Azure 应用服务配置中如何工作?

How does "Connection strings" work in Azure App Service Configuration?

我有 .NET 6 应用程序托管在 Azure 中,它在 Linux 上 运行。我刚刚创建了 App Service 并从 Visual studio 发布了我的应用程序。此应用已连接到 Azure 中的 MS SQL 服务器。

起初我将连接字符串放入 appsettings.json 文件中。然后我想以更真实的方式做到这一点。最后我发现可以将连接字符串设置到我的应用程序服务中的配置中。配置中甚至有一个特殊的部分,称为“连接字符串”。

因此,我将连接字符串放在那里,将其从 appsettings.json 中删除,然后重新发布我的应用程序,甚至在 Azure 中重新启动它。看来,应用程序运行正常。

我很感兴趣这个连接字符串是如何进入我的应用程序的。我注意到在我的应用程序容器中出现了带有我的连接字符串的环境变量 SQLAZURECONNSTR_MondayDbContext。

我尝试在我的 Windows 10 上本地执行相同的操作。我设置了环境变量 SQLAZURECONNSTR_MondayDbContext 甚至 SQLAZURECONNSTR__MondayDbContext,但应用程序崩溃了。我也尝试通过命令行参数设置它,但同样,应用程序没有看到连接字符串。

它在 Azure 中如何工作?

How does "Connection strings" work in Azure App Service Configuration?

  • 在 App Service 中设置连接字符串就像在 Web.config 中将它们设置为 <connectionStrings>,您在 App Service 中设置的值覆盖 Web.config.

    中的那些
  • 您可以在 Web.config 中安全地保存开发设置,在 App Service 中安全地保存生产机密。

  • 相同的代码在本地调试时使用您的开发设置,在部署到 Azure 时使用您的生产机密。

  • Azure 应用程序配置中的密钥名称必须与本地配置设置中的密钥名称相同。

  • 当您在 azure application Settingweb.config 中都有连接字符串时,Azure 设置将覆盖 web.config。本地测试需要在web.config中设置key/value

  • 在应用服务的配置部分添加的名称为“DefaultConnection”的连接字符串在环境变量中看起来像 SQLCONNSTR_DefaultConnection

  • 要在代码中访问它,请使用

configuration.GetConnectionString("DefaultConnection")

我想通了。事实证明,当您通过环境变量设置此变量时,这 有效。这是因为 EnvironmentVariablesConfigurationProvider 知道这个和其他一些前缀:MYSQLCONNSTR_、SQLAZURECONNSTR_、SQLCONNSTR_、CUSTOMCONNSTR_。如果您使用此前缀设置任何环境变量,您可以从配置中获取它们,就好像它们被设置到 ConnectionStrings 部分一样。