2013-04-18 52 views
2

如何在MVC應用程序中註冊全局消息處理程序?如何在MVC應用程序中註冊委託處理程序? (而不是Web API)

我想在我的Global.asax.cs登記,但每當我訪問我的任何端點在我的所有控制器,從System.Web.Mvc.Controller繼承此處理程序從未被調用。

但是,它確實當我訪問路由所有我的控制器從System.Web.Http.ApiController繼承時被調用。

這就是我把我的Global.asax.cs:

protected void Application_Start() 
{ 
    //other initializing stuff here 
    **GlobalConfiguration.Configuration.MessageHandlers.Add(new AuthenticationHandler());** 
} 

回答

1

我相信你正在尋找Filters。你可以建立這樣的事情:

public class MyAuthorizationFilter : IAuthorizationFilter 
{ 
    public void OnAuthorization(AuthorizationContext filterContext) 
    { 
     // do your work here 
    } 
} 

,然後將其在Application_Start添加到全局過濾器列表:

GlobalConfiguration.Configuration.Filters.Add(new MyAuthorizationFilter()); 
+0

感謝邁克爾。雖然我喜歡爲mvc控制器提供委託處理程序,但他們爲api控制器工作,並且我不希望在過濾器和委派處理程序中有2個獨立的部分。 –

+0

@HenleyChiu我想了解這一點。我在Web API項目中有一對'DelegatingHandler'實現,並且希望重用那些用於MVC的實現。由於兩者將採用相同的解決方案,因此跨'DelegatingHandler'和動作過濾器實現複製邏輯將不太好。 –

相關問題