Задайте приложение ConnectionString в конфигурации службы вместо web.config в Azure
В настоящее время у меня есть приложение в Azure, и всякий раз, когда мы помещаем его в промежуточный сегмент, мы не можем по-настоящему протестировать, поскольку строка подключения указывает на базу данных prod.
Кто-то сказал мне, что вы должны иметь возможность установить строку соединения в файле ServiceConfiguration.cscfg вместо (или с) файла web.config. Таким образом, вы можете изменить строку подключения на портале Azure вместо повторной публикации приложения who.
Кто-нибудь знает как это сделать?
3 ответа
В вашем файле 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;
}
Для Entity Framework вам не нужно указывать providerName, оно уже внутри строки подключения. Причина, по которой он не работает, когда он находится в настройках Azure, заключается в том, что он содержит символ ", который необходимо перевести обратно на "перед созданием нового EntityConnection. Это можно сделать с помощью HttpUtility.HtmlDecode в System.Web.
В основном вам необходимо определить эти параметры в файле конфигурации службы Azure. Проверьте здесь. После определения их можно изменить на портале Azure.