问题 没有调用ASP.NET MVC的HttpModule


我试图在ASP.NET MVC 2 Preview 1应用程序中实现每个请求的会话模式,我已经实现了一个IHttpModule来帮助我这样做:

public class SessionModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.Response.Write("Init!");
        context.EndRequest += context_EndRequest;
    }
    // ... etc...
}

我把它放到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>

但是,“初始!”永远不会写入页面(我使用的是内置的VS Web服务器,Cassini)。另外,我已经尝试在SessionModule中放置断点但它们永远不会破坏。我错过了什么?


4691
2017-09-07 21:45


起源



答案:


原来在Views文件夹中有一个Web.config文件,在根目录中有一个。猜猜我在哪个注册了httpModules?是的,Views文件夹一个。我将它移动到根Web.config,现在它就像一个魅力。


14
2017-09-09 02:04



+1,因为这正是我所做的,这就是它提示我仔细检查:/ - Michael Shimmins
尚未完成,但必然会。 +1 - Dave


答案:


原来在Views文件夹中有一个Web.config文件,在根目录中有一个。猜猜我在哪个注册了httpModules?是的,Views文件夹一个。我将它移动到根Web.config,现在它就像一个魅力。


14
2017-09-09 02:04



+1,因为这正是我所做的,这就是它提示我仔细检查:/ - Michael Shimmins
尚未完成,但必然会。 +1 - Dave


您可能必须将Response.Write放在订阅EndRequest(或BeginRequest)事件的方法中。我猜测在Init阶段尚未完全初始化Response对象。


1
2017-09-07 22:21



这不起作用 - > var app =(HttpApplication)sender; app.Context.Response.Write( “EndRequest!”); - Matthew Groves


我的问题是我在Controller方法上有[HandleError],它在我的自定义错误处理程序有机会之前捕获了错误。


1
2018-04-29 16:06