Не могли бы вы рассказать мне, что именно происходит, когда мы редактируем файл Web.config (во время выполнения) на сервере IIS?

11

Не могли бы вы рассказать мне, что именно происходит, когда мы редактируем файл Web.config (во время выполнения) на сервере IIS.

Приложение, зависящее от web.config, автоматически перезапускается? Если да, можно ли отменить автоматический перезапуск (или перезагрузить web.config)?

Бастьен Вандамме
источник
Вы можете попробовать включить аудит доступа к файлам, чтобы узнать, читает ли IIS файл web.config после его изменения.
Эрик Х

Ответы:

10

ASP.NET AppDomain перезапускается всякий раз, когда вы «касаетесь» web.config. Можно отключить уведомление об изменении файла (FCN) для папки, но обычно это не лучший выбор, если вы можете помочь. Если вы отключите его, это просто означает, что вам нужно вручную перезапустить пул приложений, чтобы изменения вступили в силу.

До IIS7 только изменения ASP.NET вызывали бы перезапуск AppDomain, но с IIS7 и многими настройками, расположенными в web.config, это более распространенная проблема. то есть изменение документа по умолчанию в IIS 7 Manager приведет к тому, что AppDomain перезапустится.

В идеале вам просто нужно снизить уровень изменений или иногда применить изменение к applicationHost.config (что не вызывает перезапуска AppDomain), а не к web.config.

Скотт Форсайт - MVP
источник
4

Приложение, которое использует web.config, перезапустится, когда вы его измените, здесь есть дополнительная информация:

http://msdn.microsoft.com/en-us/library/ms178473.aspx

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

метелка
источник
3

К сведению - в ASP.NET 2.0 вы можете использовать встроенные события мониторинга работоспособности для регистрации перезапусков приложений вместе с причиной перезапуска. Это позволит вам четко документировать, когда и как часто это происходит. Это достигается путем редактирования главного файла web.config для машины.

За дополнительной информацией:

http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

Грег Аскью
источник
3

[Просто примечание]

Я знаю, что это старый, но это все еще заслуживает отметить.

Скотт Форсайт - неправильный ответ MVP .

ASP.NET AppDomain перезапускается всякий раз, когда вы «касаетесь» web.config.

Это не верно.


Ответ Whisk является наиболее технически правильным и полным ответом, поскольку содержит ссылку на MSDN , включающую одну важную деталь:

Когда требуется перезапуск приложения, ASP.NET будет обслуживать все ожидающие запросы из существующего домена приложения и старых сборок до перезапуска домена приложения и загрузки новых сборок.

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

user1416420
источник