2009-12-15 4 views
2

Мне нужно перезапустить пул приложений из кода, знает ли кто-нибудь, как это сделать? Я видел много примеров для iis6, и большинство комментариев было «Не работает»Перезапуск пула приложений с помощью asp.net (IIS7)

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

+0

Изменение файла, вызывающего перезапуск пула приложений, не кажется очень надежным решением. Можете ли вы дать более подробную информацию о том, почему вы это делаете? –

+0

Мы делаем это, когда используем url rewrite 1.1, и нам нужно перезапустить пул приложений каждый раз, когда изменяются URL-адреса, поскольку он хранит их в памяти, когда пул вращается. URL-адреса создаются административной системой во внешнем файле в webconfig. – JamesStuddart

ответ

3

Использование application pool class было бы хорошим способом, я думаю.

Kindness,

Dan

+0

Прохладный спасибо, я загрузил iis7 sdk, но у меня нет библиотеки? есть идеи? – JamesStuddart

+0

Я думаю, что я нашел здесь dll:% WinDir% \ System32 \ InetSrv Будет ли это удаляться – JamesStuddart

+0

Ну, я получаю доступ, запрещенный для перезапуска appPool, если я не использую учетную запись Admin как пользователь appPool, но это не очень хорошая идея , Любые идеи, которые должны быть разрешены для групп? – JamesStuddart

0

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

1

На самом деле добавление единого пространства «» до конца web.config вызовет перезапуск приложения.

В папке веб-приложения (Inetpub \ Wwwroot \ WebApp) создать летучей мыши файл (rest.bat) с

echo >> web.config 

Если запустить пакетный файл, который вы получите рециркуляция

0

Вместо того, сделайте это так (переустановите пул), почему бы не использовать зависимость кэша от файла? есть пример этого here с файлом xml. Таким образом, больше приложений не перерабатывается.

XmlDocument urls = new XmlDocument(); 
     urls.Load(Server.MapPath("pathetourlfile.xml")); 
     CacheDependancy dependancy = new CacheDependency(Server.MapPath("pathetourlfile.xml")) 
     Cache.Insert("URLS", urls, dependency) 
+0

Спасибо за пример, мы листерски просто удалили весь код перезапуска пула приложений, поскольку мы нашли лучший способ сделать то, что мы пытались сделать (вернемся к тому, как я это сделал в IIS6, нам просто не хватало элемента для WebConfig). :) – JamesStuddart