Azure web.config для каждой среды - PullRequest
34 голосов
/ 19 января 2011

У меня есть проект Azure (Azure 1.3) в VS2010.Есть 2 веб-ролика, один проект веб-страницы и один проект WCF.В режиме отладки я хочу, чтобы веб-проект использовал web.config для среды DEV, и при публикации web.config для PROD.

Каков наилучший способ сделать это?

В настоящее время у меня возникают проблемы при использовании Web.Debug.config с XSLT-преобразованием.Кажется, это не работает в Azure ....

Ответы [ 5 ]

10 голосов
/ 19 января 2011

Решите вашу проблему другим способом. Представьте, что файл web.config всегда статичен и никогда не меняется при работе с Azure. Что изменится, так это ваш ServiceConfiguration.cscfg.

Что мы сделали, так это создали нашего собственного провайдера конфигурации, который сначала проверяет ServiceConfiguration.cscfg, а затем возвращается к web.config, если строка настройки / соединения отсутствует. Это позволяет нам запускать серверы в IIS / WCF непосредственно во время разработки, а затем иметь другие параметры при развертывании в Azure. Есть некоторые обстоятельства, когда вы должны использовать web.config (да, я имею в виду WCF здесь), и в этих случаях вы должны писать код и создавать соглашение вместо хранения всего в web.config. У меня есть запись в блоге, где я показываю пример того, как я это делал, когда имел дело с WIF (Windows Identity Foundation) и Azure.

3 голосов
/ 13 июля 2011

Согласен с Моисеем, отличный вопрос!

Visual Studio 2010 включает решение для этого типа проблемы, преобразования web.config. Если вы посмотрите на свою веб-роль, вы заметите, что она включает в себя Web.Debug.config и Web.Release.config вместе с традиционным web.config. Эти файлы используются для преобразования файла web.config во время развертывания.

Канонический пример: «Мне нужны разные строки подключения к базе данных для разработки и выпуска», но он также подходит для вашей ситуации.

Существует отличное сообщение в блоге от команды разработчиков Visual Web, которое объясняет, как использовать эту функцию (не беспокойтесь о документах MSDN, я знаю , как она работает, и до сих пор не понимаю документы). Проверить http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx

2 голосов
/ 13 июля 2011

Мне нравится этот вопрос!

Для рабочих ролей я решил эту проблему, обнаружив среду во время выполнения и запустив свое «приложение» в новом домене приложений с пользовательской конфигурацией:

  • bot.cloud.config
  • bot.dev.config
  • bot.win.config

Это невероятно эффективно !

Я бы хотел сделать то же самое с веб-проектами, поскольку использование конкретной конфигурации Azure сопряжено с большими трудностями:

  • Оба конфига находятся не в одном месте, что отнимает много времени при отладке
  • Вы должны освоить новый способ написания чего-то стандартного
  • Иногда вы будете удивляться, если приложение вернулось в web.config из-за глупой синтаксической ошибки

Я все еще ищу правильный способ сделать это, как в этом посте

0 голосов
/ 22 февраля 2012

В настоящее время у меня возникают проблемы при использовании Web.Debug.config с преобразовать XSLT. Похоже, это не работает в Azure ....

Это зависит от того, хотите ли вы заставить его работать на вашем локальном компьютере или внутри непрерывной интеграции.

  • Для локальной машины Я пытался ответить здесь: https://stackoverflow.com/a/9393533/182371
  • Для непрерывной интеграции это еще проще. Когда вы строите из командной строки, указав значение свойства Configuration, ваши настройки будут преобразованы (независимо от того, что они делают, когда вы создаете внутри VS). Поэтому правильное указание конфигураций сборки для облачного и веб-проекта даст вам правильный вывод в зависимости от параметров сборки.
0 голосов
/ 19 января 2011

Другим возможным решением является создание двух проектов CloudService, каждый с определенным ServiceConfiguration.cscfg (dev / prod).Разработка с использованием Dev, но развертывание Prod.

...