Каждый раз, когда мне нужно добавить обработчик или модуль для ASP.NET с IIS7, инструкции всегда говорят мне включить его в два раздела: system.web и system.webserver.
<system.web>
<httpHandlers>
</httpHandlers>
<httpModules>
</httpModules>
</system.web>
И это:
<system.webServer>
<modules>
</modules>
<handlers>
</handlers>
</system.webServer>
В чем разница между этими двумя разделами?
Кроме того, если я не добавлю его в раздел system.web, мой отладчик Visual Studio 2008 также будет работать некорректно.





Раздел system.web предназначен для настройки IIS 6.0, а версия system.webserver используется для настройки IIS 7.0. IIS 7.0 включает новый конвейер ASP.NET и некоторые отличия в конфигурации, отсюда и дополнительные разделы конфигурации.
Тем не мение...
Если вы используете IIS 7.0 только в интегрированном режиме, вам не нужно добавлять обработчики в оба раздела. Если я не ошибаюсь, добавление его в system.web является резервным вариантом для IIS 7.0, работающего в классическом режиме. Я не проводил всестороннего тестирования этого.
См. http://msdn.microsoft.com/en-us/library/bb763179.aspx для получения дополнительной информации.
А как насчет таких атрибутов, как <httpRuntime>, которые помещаются в system.web, но все же имеют значение в интегрированном режиме IIS 7?
Раздел system.web не заменяется разделом system.webserver, а просто расширяется.
В IIS 8.5 я обнаружил, что параметр httpCookies недоступен в system.webServer, но работает, если я создаю system.web и помещаю его туда.
Первый предназначен для классического режима.
Последний предназначен для режима интегрированного конвейера (доступен в IIS7 +).
Учитывая мой опыт, это лучший ответ по длине, ясности и реальности. В дополнение к классическому режиму в первом добавьте IIS Express и другие серверы, отличные от IIS 7.
лучшая текущая ссылка для этого: msdn.microsoft.com/en-us/library/46c5ddfy.aspx