Dot-Net

沒有呼叫帶有 ASP.NET MVC 的 HttpModule

  • April 29, 2010

我正在嘗試在 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>
     &lt;add name="SessionModule" type="MyNamespace.SessionModule" /&gt;
   &lt;/httpModules&gt;

 &lt;system.webServer&gt;
   &lt;modules runAllManagedModulesForAllRequests="true"&gt;
     &lt;remove name="SessionModule" /&gt;
     &lt;add name="SessionModule" type="MyNamespace.SessionModule" /&gt;
   &lt;/modules&gt;

然而,“初始化!” 永遠不會被寫入頁面(我使用的是內置的 VS Web 伺服器,Cassini)。此外,我嘗試在 SessionModule 中放置斷點,但它們永遠不會中斷。我錯過了什麼?

原來在 Views 文件夾中有一個 Web.config 文件,在根目錄中有一個。猜猜我在哪一個中註冊了 httpModules?是的,Views 文件夾之一。我將它移到了根 Web.config,現在它就像一個魅力。

您可能必須將 Response.Write 放在訂閱 EndRequest(或 BeginRequest)事件的方法中。我猜 Response 對像在 Init 階段還沒有完全初始化。

引用自:https://stackoverflow.com/questions/1391060