Dot-Net
沒有呼叫帶有 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 中放置斷點,但它們永遠不會中斷。我錯過了什麼?
原來在 Views 文件夾中有一個 Web.config 文件,在根目錄中有一個。猜猜我在哪一個中註冊了 httpModules?是的,Views 文件夾之一。我將它移到了根 Web.config,現在它就像一個魅力。
您可能必須將 Response.Write 放在訂閱 EndRequest(或 BeginRequest)事件的方法中。我猜 Response 對像在 Init 階段還沒有完全初始化。