visual tag studio color code closing brackethighlighter autocompletar visual-studio httphandler web-config httpmodule

visual studio - tag - El servidor web de desarrollo VS2010 no utiliza controladores/módulos HTTP en modo integrado



visual studio code color brackets (3)

Estoy desarrollando un sitio web ASP.NET MVC 2, dirigido a .NET Framework 4.0, utilizando Visual Studio 2010.

Mi web.config contiene el siguiente código:

<system.webServer> <modules runAllManagedModulesForAllRequests="true"> <add name="XhtmlModule" type="DomenicDenicola.Website.XhtmlModule" /> </modules> <handlers> <add name="DotLess" type="dotless.Core.LessCssHttpHandler,dotless.Core" path="*.less" verb="*" /> </handlers> </system.webServer>

Cuando uso Build > Publish para colocar el sitio web en mi instancia de IIS7 local, funciona muy bien.

Sin embargo, cuando uso Debug > Start Debugging , ni el controlador HTTP ni el módulo se ejecutan en ninguna solicitud.

Por extraño que parezca, cuando vuelvo a colocar las etiquetas del controlador y del módulo <add /> en <system.web /> debajo de <httpHandlers /> y <httpModules /> , funcionan. Esto parece implicar que el servidor web de desarrollo se está ejecutando en modo clásico.

¿Cómo puedo solucionar esto?


Consiguió esto hoy mientras se ejecuta en visual studio 2012. Se encontró que la razón era que Visual Studio lanzó el antiguo servidor web que viene con 2010 y, como se explicó anteriormente, no puede funcionar allí. Se cambió a IIS Express haciendo clic con el botón derecho en las propiedades, seleccione la pestaña "Web" y seleccione la opción IIS Express. Luego, el inicio del modo de depuración se iniciará en IIS Express y esto aparentemente es compatible con operaciones como Request.Headers.Add o lo que sea que haya provocado su excepción.


No estoy seguro de si soy demasiado tarde para responder, pero si bien se sabe que el servidor Cassini no admite el modo de canalización integrado, aún puede probar localmente utilizando la canalización clásica agregándolo a la sección httpModules del sistema. web en tu web.config:

<system.web> <compilation debug="true" targetFramework="4.0"/> . . . <!-- HTTP Modules using Classic Pipeline --> <httpModules> <add name="YourHttpModule" type="ACME.YourHttpModule"/> </httpModules> </system.web> <system.webServer> <!-- HTTP Modules using Integrated Pipeline --> <modules runAllManagedModulesForAllRequests="true"> <add name="YourHttpModule" type="ACME.YourHttpModule"/> </modules> </system.webServer>

Probablemente querrá eliminar la sección httpModules de su web.config de producción.


Usted no WebDev.WebServer.exe no admite y no puede admitir canalización integrada.

Por lo tanto, si tiene un código que no se puede escribir para funcionar en ambos entornos, deberá usar un IIS local para el desarrollo.

Básicamente, system.web es el lugar para configurar el servidor webdev y los controladores y módulos IIS5-6. system.webServer es para los controladores y módulos de IIS7, como saben.

Referencia :

Cada solicitud en WebDev.WebHost40 (y versiones anteriores) se procesa mediante HttpRuntime.ProcessRequest ( que no admite el modo de canalización integrado ). Este es el método utilizado en las tres versiones de WebHost.WebServer.dll (el núcleo de WebDev.WebServer.exe )

Y la palabra de un tipo que está bastante familiarizado con el funcionamiento interno de Cassini / WebDev en virtud de la gestión de este proyecto . ;-)