Можно ли редактировать web.config облачного приложения, развернутого в Windows Azure, без повторного развертывания моего приложения? - PullRequest
32 голосов
/ 02 марта 2010

Можно ли редактировать web.config файл моего облачного приложения, развернутого в Windows Azure, без повторного развертывания моего приложения?

Сценарий похож на ->

  1. Облачное приложение развернуто в Azure с 3 экземплярами.
  2. web.config содержит статический текст в appsetting , который отображается на домашней странице (например - © 2009 Мой сайт. Все права защищены )
  3. Теперь я хочу изменить статический текст, упомянутый в Web.Config, с 2009 на 2010 .
  4. Теперь я хочу отредактировать Web.Config без повторного развертывания моего сайта.
  5. Я не хочу -> развернуть мое приложение на stagging с обновленным Web.Config , а затем заменить его на production .

Есть ли хитрость для обновления файлов из пакета, развернутого во время выполнения?

Ответы [ 5 ]

20 голосов
/ 02 марта 2010

По словам Максима, в комментариях ниже этот ответ сейчас устарел.

Вы можете программно изменить настройки web.config веб-роли в событии OnStart, используя библиотеку Microsoft.Web.Administration.ServerManager.

*** оставив исходный ответ таким, каким он был в то время и верно, я не использовал Azure с тех пор, как отвечал на этот вопрос, и я не уверен на 100% в правильном ответе.

Одним словом нет.

Для таких настроек вы должны использовать файл конфигурации сервиса.

Чтобы решить, следует ли помещать ключи в параметры конфигурации службы в сравнении с параметрами конфигурации сети.

Вы можете задать себе следующие вопросы:

Изменяется ли этот параметр при каждом развертывании? Если это так, то параметры конфигурации web являются правильным местом для этой информации.

Изменится ли этот параметр после развертывания? Если это так, то параметры конфигурации service являются правильным местом для этой информации.

Файл Web.config является частью пакета развертывания и поэтому доступен только для чтения при развертывании в Azure, чтобы обновить параметры, которые вам необходимо будет повторно развернуть.

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

8 голосов
/ 07 декабря 2010

Это возможно , и если вы внесете изменения в web.config, приложение ASP.NET будет перезапущено с новыми настройками, как вы ожидаете в «обычном ASP.NET». Вам просто нужно быть уверенным, что вы делаете правильные обновления для web.config, или ваш экземпляр, вероятно, невозможно восстановить после того, как ASP.NET исчезнет с ошибкой web.config.

Если у вас есть web.config как часть вашего пакета развертывания, вам нужно изменить права доступа к нему, что вы можете сделать из RoleEntryPoint.OnStart ().

Другим способом было бы заставить ваше приложение ASP.NET написать исходный файл web.config через некоторый веб-обработчик init.

По умолчанию приложение ASP.NET не будет иметь разрешения на обновление или удаление файлов из пакета развертывания или файлов, записанных вашим кодом RoleEntryPoint, в то время как оно имеет полный доступ к файлам, которые оно создает само. Такое поведение наблюдается только в «реальном Azure», тогда как при локальном запуске с SDK все происходит иначе.

Проверьте это для получения информации о записи файлов и настройке разрешений для файлов из RoleEntryPoint.OnStart (): Как получить корневой путь сайта WebRole от RoleEntryPoint.OnStart ()?

1 голос
/ 14 июня 2014

Да, это можно сделать. Шаги:

  1. Используйте переменную окружения 'RdRoleRoot', чтобы найти корень роли.
  2. Найдите файл 'RoleModel.xml'
  3. Загрузите файл 'RoleModel.xml' и найдите запись для своего сайта в узле "Сайты"
  4. В этой записи ищите атрибут «physDirectory», который является относительным путем к каталог, содержащий ваш файл web.config
  5. Объедините корневой путь роли с этим физическим путем к каталогу, чтобы получить полный путь

Я написал сообщение в блоге http://anuchandy.blogspot.com/2014/02/changing-webconfig-file-deployed-on.html с примером кода.

0 голосов
/ 13 июля 2018

13 июля 2018

На портале Azure есть Редактор службы приложений (в режиме предварительного просмотра) в развернутой службе приложений. Выбор этого дает редактору, похожему на код Visual Studio, нацеленный на ваш развернутый веб-сайт Azure, который позволяет легко редактировать web.config (или любой другой файл):

Azure App Service Editor screenshot

0 голосов
/ 05 июня 2014

да, вы можете, все, что вам нужно сделать, это создать RDC для Azure и перейти к E: \ siteroot \ 0, где вы увидите все развернутые файлы. и просто отредактируйте web.config , что вам нравится. он будет работать как для производства, так и для постановки, без необходимости повторного развертывания, повторного создания образа или перезагрузки.

Может это сообщение Тема давно задана, но для таких, как я, это определенно полезно: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...