Управление строками соединения Развертывание службы 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.

Другие вопросы по тегам