¿Diferencia entre <system.web> y <system.webServer>?

197

Cada vez que tengo que agregar un controlador o módulo para ASP.NET con IIS7, las instrucciones siempre me dicen que lo incorpore en dos secciones: system.weby system.webserver.

<system.web>
    <httpHandlers>
    </httpHandlers>
    <httpModules>
    </httpModules>
</system.web>

Y esto:

<system.webServer>
    <modules>
    </modules>
    <handlers>
    </handlers>
</system.webServer>

¿Cuál es la diferencia entre estas dos secciones?

Además, si no lo agrego a la system.websección, mi depurador de Visual Studio 2008 tampoco funciona correctamente.

danmine
fuente
2
una mejor referencia actual para esto es: msdn.microsoft.com/en-us/library/46c5ddfy.aspx
Shannon

Respuestas:

157

La sección system.web es para configurar IIS 6.0, mientras que la versión system.webserver se usa para configurar IIS 7.0. IIS 7.0 incluye una nueva tubería ASP.NET y algunas diferencias de configuración, de ahí las secciones de configuración adicionales.

Sin embargo...

Si está ejecutando IIS 7.0 solo en modo integrado, no debería necesitar agregar los controladores a ambas secciones. Agregarlo a system.web también es una alternativa para IIS 7.0 que funciona en modo clásico, a menos que me equivoque. No he hecho pruebas exhaustivas sobre esto.

Consulte http://msdn.microsoft.com/en-us/library/bb763179.aspx para obtener más información.

Chris
fuente
44
¿Qué pasa con los atributos como <httpRuntime> que se colocan en system.web pero que aún marcan la diferencia en el modo integrado de IIS 7?
sclarson
38
La sección system.web no es reemplazada por la sección system.webserver, solo extendida.
Chris
En IIS 8.5 descubrí que la httpCookiesconfiguración no está disponible en system.webServer pero funciona si creo un system.web y lo pongo allí.
Eborbob
44

El primero es para el modo clásico.

Este último es para el modo de canalización integrado (disponible en IIS7 +).

leppie
fuente
Dada mi experiencia, es una mejor respuesta en longitud, claridad y realidad. Además del modo clásico en el primero, agregue IIS express y otros servidores que no sean IIS 7.
Ben Gripka