11

我正在尝试在 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 中放置断点,但它们永远不会中断。我错过了什么?

4

3 回答 3

14

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

于 2009-09-09T02:04:47.727 回答
1

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

于 2010-04-29T16:06:20.557 回答
1

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

于 2009-09-07T22:21:22.810 回答