我目前在 Azure 中有一个应用程序,每当我们将其推送到暂存段时,我们都无法真正进行测试,因为连接字符串指向 prod 数据库。
有人向我提到,您应该能够在 ServiceConfiguration.cscfg 文件中设置连接字符串,而不是(或使用)web.config 文件。这样,您可以在 Azure 门户中更改连接字符串,而不是重新发布 who 应用程序。
有谁知道如何做到这一点?
我目前在 Azure 中有一个应用程序,每当我们将其推送到暂存段时,我们都无法真正进行测试,因为连接字符串指向 prod 数据库。
有人向我提到,您应该能够在 ServiceConfiguration.cscfg 文件中设置连接字符串,而不是(或使用)web.config 文件。这样,您可以在 Azure 门户中更改连接字符串,而不是重新发布 who 应用程序。
有谁知道如何做到这一点?
在您的 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;
}
对于实体框架,您不需要提供 providerName,它已经在连接字符串中。它在天蓝色设置中不起作用的原因是,在创建新的 EntityConnection 之前,它包含“需要转换回”的符号。您可以使用 System.Web 中的 HttpUtility.HtmlDecode 来完成。
基本上你需要在 Azure 服务配置文件中定义这些设置。在这里检查。定义后,可以从 Azure 门户更改这些内容。