2013-04-18 19 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'和动作过滤器实现复制逻辑将不太好。 –

相关问题