在Azure应用程序设置中配置我的连接字符串,并在我的web.config中将其配置为环境变量

时间:2018-12-26 19:38:18

标签: .net azure web-config connection-string application-settings

我在Azure中有一个Web应用程序,并且在其应用程序设置中配置了connectionStrgin,但是我不知道如何在应用程序web.config(.Net)中将此配置设置为环境变量。

有人有一些文档或知道如何使之成为可能,到目前为止,我已经查看了Microsoft和其他网站的文档以进行故障排除,但是我找不到解决方法

4 个答案:

答案 0 :(得分:2)

连接字符串

对于ASP.NET之类的.NET应用程序,这些连接字符串在运行时注入到您的.NET配置connectionStrings设置中,并覆盖键等于链接的数据库名称的现有条目。

这些设置还将在运行时用作环境变量,并以连接类型为前缀。环境变量前缀如下:

SQL Server:SQLCONNSTR_
MySQL:MYSQLCONNSTR_
SQL数据库:SQLAZURECONNSTR_
自定义:CUSTOMCONNSTR_

您可以使用ConfigurationManager.ConnectionStrings["keyname"];在应用程序中检索设置。

  

然后在我的web.config中,我应该将connectionString保留为空白,并将自动使用应用程序设置的connectionString吗?

,是的。当您在azure应用程序Setting和web.config中都具有连接字符串时,the azure settings will override web.config。在本地进行测试时,可以在web.config中设置键/值。

答案 1 :(得分:0)

当您在应用程序应用程序设置中使用键/值对时,键/值将在运行时注入到您的配置中。同样,对于您的连接字符串,它们会在运行时注入到您的配置中。这些设置将在运行时覆盖Web.Config中的所有设置。如果Azure中缺少设置,则程序将在web.config中查找。您可以使用ConfigurationManager.AppSettings["keyname"];

检索应用程序中的设置

https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure#app-settings和此处https://buildazure.com/2015/11/30/azure-web-app-application-settings/

了解更多信息

答案 2 :(得分:0)

谢谢大家的帮助,我设法为我的问题提供了完整的解决方案。在.Net中,有效地自动替换了连接链,但是在我的情况下,连接仍然存在问题。要解决此问题,请将数据库配置为“自定义”,然后从我的web.config的代码中删除连接字符串的值。

enter image description here

<connectionStrings>
<add name="hidhiddenname1"
     connectionString=""
     providerName="Gale.Db.Factories.SQLServerFactory"/>
<add name="hidhiddenname2"
     connectionString=""
     providerName="Gale.Db.Factories.SQLServerFactory"/>
</connectionStrings>

我希望这可以帮助其他人:D

答案 3 :(得分:0)

我进一步修改了Nicolas Herrera提供的答案,由于安全原因,我们无法将计划文本连接字符串添加到App服务配置部分,最重要的是,我遇到了计划文本连接字符串的格式化问题,因此结束从配置部分的密钥库中读取连接字符串值

Connectionstring name =“您的ConnectionString密钥名称”

值= @ Microsoft.KeyVault(SecretUri =“您的密钥库uri”)

Type = Custom(必须为custom,否则它将无法正常工作),但是如果您想查看适合自己的方法,也可以尝试使用diff类型

仅供参考,我仍然在配置中保留连接字符串值,以便可以在本地运行我的应用程序以进行调试,如Microsoft文档所述,在App Service中,每个环境都替换了连接字符串值

对于ASP.NET和ASP.NET Core开发人员,在App Service中设置连接字符串就像在Web.config中设置它们一样,但是在App Service中设置的值将替代在Web.config中设置的值。您可以将开发设置(例如,数据库文件)保存在Web.config中,将生产秘密(例如SQL数据库凭据)保存在App Service中。相同的代码在本地调试时使用开发设置,在部署到Azure时使用生产机密。