Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Словом no.

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

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

  • Используйте переменную окружения 'RdRoleRoot', чтобы найти корень этой роли.
  • Посмотрите файл 'RoleModel.xml'
  • Загрузите файл RoleModel.xml и найдите запись для своего сайта в разделе "Сайты" node
  • В этой записи найдите атрибут "physicalDirectory", который является относительным путем к каталог, содержащий ваш файл web.config
  • Объединить корневой путь ролей с этим пути физического пути, чтобы получить полный путь

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

Ответ 4

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

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