Строки подключения заменяются при выполнении промежуточной замены веб-сайта Azure

(1) у нас есть веб-приложение, работающее на веб-сайте Azure с использованием Sql Server (Web Edition). Приложение включает две строки подключения:

  • DefaultConnection - обычная строка подключения в виде Server=tcp:{my-sql-server}.database.windows.net,1433;Database=...).

  • EFConnection - строка подключения Entity framework. Поскольку я использую конструктор EF (и мне это нравится), мне нужно использовать строку подключения в виде metadata=res://*/Models.EDM...

(2) Я поместил строки подключения в web.config; это единственный способ, которым строка подключения «метаданные ...» (EF) была принята (при попытке ввести эти строки подключения в панели управления веб-сайта Azure я получил всевозможные странные ошибки).

Все отлично работает.

(3) Затем я добавил на наш веб-сайт промежуточный слот для поэтапной разработки, как описано в Поэтапное развертывание на веб-сайтах Microsoft Azure

Постановочный сайт работает нормально. Я создал для него другой сервер Sql и установил для него строку подключения так же, как на рабочем сайте (то есть в файле web.config). Я обрабатываю разные web.config с помощью web.config Transformations. (у меня есть еще 2 преобразования - для разработки / отладки и для локальных развертываний / выпуска)


Проблема: теперь, когда у меня есть производственный + промежуточный сайт, я пытаюсь сделать свопинг. Своп отлично работает, и любые изменения, внесенные на промежуточный сайт, переносятся на производственную.

Однако своп также берет строки подключения с промежуточного сайта, соединяя производство с промежуточной базой данных.

* Это известная ошибка? есть ли обходной путь? (на данный момент я должен выполнить прямое развертывание на производственном сайте после того, как QA протестировал подготовленный сайт - это означает простои для нашего сайта и тихое поражение цели всего этого упражнение)


person yarg    schedule 12.06.2014    source источник


Ответы (5)


Параметры приложения и строки подключения не привязаны к слоту и останутся с веб-сайтом при замене, но мы можем настроить выбранные параметры приложения и строки подключения, чтобы они были привязаны к слоту, используя команду PowerShell (пока не поддерживается порталом Azure).

Используйте эту команду в Azure PowerShell, чтобы установить 2 параметра приложения как привязанные к слоту:

/* If you have one config */
Set-AzureWebsite -Name mysite -SlotStickyAppSettingNames @("myslot")

/* If you have more than one */
Set-AzureWebsite -Name mysite -SlotStickyAppSettingNames @("myslot", "myslot2")

И эта команда, чтобы установить 2 строки подключения как привязанные к слоту (следует тем же принципам, описанным выше):

Set-AzureWebsite -Name mysite -SlotStickyConnectionStringNames @("myconn", "myconn2")

Конфигурация слота привязана к конфигурации всего веб-сайта и влияет на все слоты на этом веб-сайте.

РЕДАКТИРОВАТЬ:

Как отметил Джефф Тройтинг в одном из комментариев ниже, теперь в новом портале есть флажок «Настройка слота», который вы можете выбрать, перейдя:

«Веб-приложения» -> выберите свое веб-приложение -> «Настройки» -> «Настройки приложения». Изображение портала Azure

person Leandro Gomes    schedule 24.11.2014
comment
Я заметил, что на новом портале теперь есть флажок для настройки слота рядом со всеми строками подключения и настройками приложения, который выполняет то же самое, что и приведенные выше команды PowerShell. - person Jeff Treuting; 31.01.2015
comment
Я все еще вижу предупреждение, когда делаю Swap на новом портале, когда он думает, что строка подключения не существует в производственной среде (она существует и с тем же именем). - person kamranicus; 30.05.2015
comment
какой формат значения connectionstring? Добавьте, если знаете. - person ManirajSS; 18.11.2015
comment
я должен дать как Server=tcp:xxxxxxxxxx.database.windows.net;Database=testDB;User ID=MyAdmin@xxxxxxxxxx;Password=pass@word1;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=true под текстовым полем значения? - person ManirajSS; 18.11.2015
comment
@ManirajSS, посмотрите здесь: www.connectionstrings.com - person Leandro Gomes; 20.11.2015

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

Возможно, слово «стадия» вводит в заблуждение компании, которые используют этот термин для обозначения среды обеспечения качества, максимально приближенной к производственной. В Microsoft Azure промежуточная среда - это предварительная концепция, позволяющая предварительно настроить и протестировать обновление вашего веб-сайта.

Среды обеспечения качества должны иметь свои собственные среды.

person Herve Roggero    schedule 12.06.2014

Функция слотов развертывания для веб-сайтов Azure позволяет проверить версию вашего сайта с полным содержанием и обновлениями конфигурации на целевой платформе, прежде чем направлять клиентский трафик на эту версию. Ожидается, что слот развертывания будет полностью настроен в желаемом целевом формате перед выполнением подкачки. Операция подкачки не применяет преобразования к исходному слоту развертывания, она беспрепятственно перенаправляет веб-трафик.

Одна из идей упростить рабочий процесс с точки зрения проверки и обновлений перед заменой - использовать настройки приложения для строк подключения EF.

person Daria Grigoriu    schedule 24.06.2014

Итак, мы должны использовать лазурную «стадию» в качестве еще одного шага в развертывании - метод, используемый для обеспечения немедленного развертывания без простоя сайта?

в этом случае я все еще могу использовать его как среду qa и перенастроить перед заменой на prodcution.

person yarg    schedule 13.06.2014
comment
Да, единственная цель постановки - поддержка развертываний с нулевым временем простоя. Контроль качества должен выполняться в отдельном развертывании облачной службы. - person Eric; 04.09.2014

FWIW, вы можете сохранить строку подключения EF на портале Azure, (а) скопировав и вставив всю строку МЕЖДУ кавычками, (б) заменив кавычки с измененным объектом HTML вокруг внутренней строки подключения фактическими двойными кавычками и (c) выбор «Пользовательский» для типа БД в консоли Azure.

person Brett    schedule 03.01.2016