Управление строками соединения Развертывание службы Azure Cloud
У меня есть проект Azure Cloud Service, который состоит из одной рабочей роли и одной веб-роли. Мне нужно иметь как промежуточное, так и оперативное развертывание, но мне нужно, чтобы они имели разные строки подключения, потому что рабочая роль генерирует много данных, о которых сообщает веб-приложение, и я не хотел бы иметь тестовые данные в рабочей среде.
Каков наилучший способ настроить это так, чтобы я мог быстро поменять местами или перейти с промежуточной стадии на живую, а строки подключения просто обновить без необходимости повторной публикации из Visual Studio с использованием другой конфигурации.
4 ответа
Можно написать сценарий PowerShell, который вызывает API-интерфейс REST Azure Management и изменяет строки подключения.
$restEndpoint = "https://management.core.windows.net/$subscriptionId/services/webspaces/$webspace/sites/$website/slotConfigNames"
$appSettings = $appSettingNames -replace ",", "','"
$connectionStrings = $connectionStringNames -replace ",", ""","""
$payload = "{""AppSettingNames"": [""$appSettingNames""], ""ConnectionStringNames"": [""$connectionStrings""]}"
Invoke-WebRequest -Uri $restEndpoint -Body $payload -CertificateThumbprint $certThumbprint -ContentType "application/json" -Headers @{ "x-ms-version" = "2014-04-01" } -Method POST
Насколько я знаю, для этого нет автоматизированного инструментария. Когда вы меняете местами, ваша конфигурация также меняется. Из того, что я понимаю, вы не хотите менять конфиги, а только приложение.
Возможно, вам придется создать свой собственный инструмент подкачки, который будет подключаться к API управления и к свопу так, как вы хотите.
Позволь мне понять твой кулак. У вас есть две БД (Test и Live) и две среды (Staging и Production CS).
Если я прав, пожалуйста, прочитайте ниже.
У вас должно быть два набора строки подключения в web.config(StagingConStr и ProductionCOnStr). На основе хоста (liveite.cloudapp.net или stagingsite.cloudapp.net) вы можете обнаружить, что это вживую или в постановке. На основе обнаружения вы можете использовать другую строку подключения.
Надеюсь это поможет...
Как уже отмечали другие, это известное ограничение концепции смены VIP / слотов, существующей в текущем поколении облачных служб Azure (веб-роли / рабочие роли).
Еще один обходной путь: вы можете использовать обработчик событий OnRoleStart и написать собственный код для проверки используемого слота и обновления рабочей конфигурации.
То, как я видел решение подобного рода проблем, заключается также в перемещении как можно большего количества конфигурации из локальной конфигурации в удаленную базу данных, которая затем используется в качестве источника конфигурации. Это не всегда возможно, учитывая то, как в некоторых случаях работают разделы конфигурации web.config.