.net - net - web forms c# tutorial
HttpModule con ASP.NET MVC no se llama (3)
Estoy tratando de implementar un patrón de sesión por solicitud en una aplicación ASP.NET MVC 2 Preview 1, y he implementado un IHttpModule para ayudarme a hacer esto:
public class SessionModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.Response.Write("Init!");
context.EndRequest += context_EndRequest;
}
// ... etc...
}
Y lo puse en la web.config:
<system.web>
<httpModules>
<add name="SessionModule" type="MyNamespace.SessionModule" />
</httpModules>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="SessionModule" />
<add name="SessionModule" type="MyNamespace.SessionModule" />
</modules>
Sin embargo, "Init!" nunca se escribe en la página (estoy usando el servidor web incorporado de VS, Cassini). Además, he intentado poner puntos de ruptura en el SessionModule pero nunca se rompen. ¿Qué me estoy perdiendo?
Es posible que deba colocar Response.Write en el método que se suscribe al evento EndRequest (o BeginRequest). Supongo que el objeto Response no se ha inicializado por completo en la etapa Init.
Resulta que hay un archivo Web.config en la carpeta Vistas y uno en la raíz. ¿Adivina en cuál he registrado los httpModules? Sí, la carpeta de Vistas uno. Lo moví a la raíz Web.config y ahora funciona como un encanto.
Mi problema era que tenía [HandleError] en el método del controlador, que detectaba el error antes de que mi controlador de error personalizado tuviera la oportunidad de hacerlo.