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

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

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

  • EFConnection - Строка подключения структуры Entity. Поскольку im использует Дизайнер EF (и любящий его) мне нужно использовать строку подключения в форма metadata=res://*/Models.EDM...

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

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

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

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


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

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

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

Ответ 1

Настройки приложения и строки подключения не привязаны к слоту и остаются на веб-сайте при обмене, но мы можем настроить выбранные параметры приложения и строки подключения, чтобы они стали липкими в слоте, используя команду 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")

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

EDIT:

Как отметил Джефф Треутинг в одном из комментариев ниже, теперь у нового портала установлен флажок "Слот", который вы можете выбрать:

"Веб-приложения" → выберите свое веб-приложение → "Настройки" → "Настройки приложения". Azure Portal Image

Ответ 2

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

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

Окружения QA должны иметь свои собственные среды.

Ответ 3

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

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

Ответ 4

поэтому мы должны использовать azure "staging" как еще один шаг в развертывании - метод, используемый для обеспечения немедленного развертывания без простоя сайта?

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

Ответ 5

FWIW, вы можете сохранить строку подключения EF на портале Azure, выполнив (a) копирование и вставку всей строки BETWEEN кавычек, (b) замещение метки котировки, модифицированной сущностью HTML, вокруг внутренней строки соединения с фактическим двойным кавычки и (c) выбор "Custom" для типа DB в консоли Azure.