Задайте приложение ConnectionString в конфигурации службы вместо web.config в Azure - PullRequest
17 голосов
/ 12 мая 2011

В настоящее время у меня есть приложение в Azure, и всякий раз, когда мы помещаем его в промежуточный сегмент, мы не можем по-настоящему протестировать, поскольку строка подключения указывает на базу данных prod.

Кто-то сказал мне, что вы должны установить строку соединения в файле ServiceConfiguration.cscfg вместо (или с) файла web.config.Таким образом, вы можете изменить строку подключения на портале Azure вместо повторной публикации приложения who.

Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

26 голосов
/ 13 мая 2011

В вашем файле 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; 
}

Эта статья содержит более подробное объяснение вышеприведенного.

3 голосов
/ 01 августа 2012

Для Entity Framework вам не нужно указывать имя провайдера, оно уже внутри строки подключения. Причина, по которой он не работает, когда он находится в настройках Azure, состоит в том, что он содержит символ & quot, который необходимо перевести обратно на «перед созданием нового EntityConnection. Вы можете сделать это с помощью HttpUtility.HtmlDecode в System.Web.

1 голос
/ 12 мая 2011

В основном вам необходимо определить эти настройки в файле конфигурации службы Azure.Отметьте здесь .После определения их можно изменить на портале Azure.

...