Задайте приложение 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.

Другие вопросы по тегам