rewritemaps с внешней конфигурацией, чтобы принудительно перезапустить пул приложений

У меня есть следующее, определенное в моем web.config (

<rewriteMaps configSource="Rewrites.config"  />

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

Мой вопрос в том, что я хочу иметь возможность автоматически перезапускать пул приложений при изменении файла, возможно ли это? или их лучший подход?

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

Я использую IIS7 в интегрированном режиме под управлением Medium Trust.

Спасибо, Ричард.


person Rippo    schedule 23.07.2009    source источник
comment
Просто чтобы быть уверенным: используете ли вы модуль Microsoft URL Rewrite для IIS 7? Это версия 1.1 или 2.0? х86 или х64?   -  person Alfred Myers    schedule 26.08.2009


Ответы (3)


Хитрый способ утилизации только вашего пула приложений — добавить, а затем удалить подпапку. Это вызовет перезапуск приложения.

person JustLoren    schedule 25.08.2009
comment
Если ваша веб-ферма использует централизованный файловый сервер, да. - person JustLoren; 31.08.2009

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

person Simon Wilson    schedule 20.08.2009
comment
Привет, я не думаю, что это будет работать на среднем уровне доверия, поскольку он вызывает EXE-файл вне корневого веб-сайта. Извините, но это не тот ответ, который я ищу - person Rippo; 21.08.2009
comment
Предпочтительным методом перезапуска одного приложения является HttpRuntime.UnloadAppDomain(). Приложению не требуется знать свой пул приложений. Однако я считаю, что для этого требуется более высокий уровень доверия, чем средний, поэтому в вашей ситуации это не поможет. Размещение здесь для тех, кто следит за этим разговором. - person Jerry Bullard; 27.08.2009

Если веб-страница администратора имеет доступ к каталогу приложения, просто перепишите веб-страницу или подделайте модификацию web.config после записи внешнего файла rewrites.config. Перезапуск пула приложений будет происходить нормально из-за изменения в web.config, что в конечном итоге приведет к повторному чтению внешней конфигурации.

У этого подхода есть пара недостатков:

  1. в сценарии веб-фермы вам нужно переписать файл web.config для каждого узла в ферме, чтобы получить согласованное состояние.
  2. эта перезагрузка приложения вызывает повторную компиляцию веб-сайта, что может привести к ошибке 503, если вы не работаете в сценарии веб-сада.

Лучшим подходом может быть позволить администратору переписать файл в обычном режиме через веб-страницу, как вы делаете сегодня, а затем запустить сценарий, как предложил @Simon. Скорее всего, у администратора уже есть повышенные привилегии, и он должен иметь возможность выполнить сценарий, вызывающий iisapp.vbs для перезапуска конкретного пула приложений, а не полного сброса iisreset.

Надеюсь, это поможет!
Z

person Zach Bonham    schedule 22.08.2009