Asp.net
MVC 3/4 HttpModule 或 ActionFilter
我需要為進入我的應用程序的每個請求檢查一些東西(Cookie)。
在 ASP.NET 中,我們使用 HttpModule 來完成這項任務,問題應該在 MVC 中使用什麼?一些 Global Filter ,或者我也可以使用 HttpModuler , MVC 和正常 ASP.NET 之間的 Request PipeLine 有什麼區別嗎?
MVC 是對 ASP.NET 的抽象,因此它們的“鉤子”實際上取決於您要在哪個級別注入邏輯。動作過濾器將允許您掛鉤 MVC 特定事件:
OnActionExecuting– 在執行控制器操作之前呼叫此方法。OnActionExecuted– 在執行控制器操作後呼叫此方法。OnResultExecuting– 在執行控制器操作結果之前呼叫此方法。OnResultExecuted– 該方法在控制器動作結果執行後呼叫。而 HttpModule 僅允許您掛鉤到 ASP.NET(在其上建構 MVC)特定事件:
BeginRequest- 請求已開始。如果您需要在請求開始時執行某些操作(例如,在每個頁面頂部顯示廣告橫幅),請同步此事件。AuthenticateRequest- 如果您想插入您自己的自定義身份驗證方案(例如,根據數據庫查找使用者以驗證密碼),請建構一個同步此事件並以您想要的方式對使用者進行身份驗證的模組。AuthorizeRequest- 此事件在內部用於實現授權機制(例如,將訪問控制列表 (ACL) 儲存在數據庫中而不是文件系統中)。儘管您可以覆蓋此事件,但這樣做的充分理由並不多。PreRequestHandlerExecute- 此事件在 HTTP 處理程序執行之前發生。PostRequestHandlerExecute- 此事件在 HTTP 處理程序執行後發生。EndRequest- 請求已完成。您可能想要建構一個調試模組,該模組在整個請求中收集資訊,然後將資訊寫入頁面。所以這真的取決於你什麼時候需要掛鉤你的事件以及你需要哪些事件。