Строки подключения заменяются при выполнении сеанса веб-сайта 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.