我目前在Azure中有一个应用程序,每当我们将它推入Staging段时,由于连接字符串指向prod数据库,我们无法真正测试。
有人提到我应该能够在(或)web.config文件中设置ServiceConfiguration.cscfg文件中的连接字符串。这样,您可以更改Azure门户中的连接字符串,而不是重新发布who app。
有谁知道怎么做?
答案 0 :(得分:26)
在ServiceConfiguration.cscfg文件中添加:
<ServiceConfiguration ... />
<Role ... />
<ConfigurationSettings>
<Setting name="DatabaseConnectionString" value="put your connection string here" />
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
现在,您可以通过编辑azure门户网站中的配置来更改连接字符串。
然后,只要您需要检索连接字符串,就可以使用:
using Microsoft.WindowsAzure.ServiceRuntime;
...
String connString = RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString")
您可能需要将Microsoft.WindowsAzure.ServiceRuntime.dll添加到引用中。
RoleEnviroment.IsAvailable
可用于测试您是否在Azure中运行,如果不是,则回退到您的web.config设置。
using System.Configuration;
using Microsoft.WindowsAzure.ServiceRuntime;
...
if (RoleEnvironment.IsAvailable)
{
return RoleEnvironment.GetConfigurationSettingValue("DatabaseConnectionString");
}
else
{
return ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
}
答案 1 :(得分:3)
对于Entity Framework,您不需要提供providerName,它已经位于connectionstring中。它在azure设置中不起作用的原因是,它包含&amp; quot符号,需要将其转换回“在创建新的EntityConnection之前。你可以使用System.Web中的HttpUtility.HtmlDecode来完成它。
答案 2 :(得分:1)
基本上,您需要在Azure服务配置文件中定义这些设置。检查here。一旦定义,可以从Azure门户更改这些。