为什么OnAuthorization在我的自定义AuthorizationFilterAttribute中调用了两次?

时间:2013-12-30 23:32:19

标签: c# asp.net-web-api authorization

为什么OnAuthorization为我的直接AuthorizationFilterAttribute调用了两次?

public class ApiAuthenticateAttribute : AuthorizationFilterAttribute
{
   public void override OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        if(NotAuthorized())
            throw new Exception();

    }
}

First Call Stack

First Call Stack

第二个呼叫堆栈

Second Call Stack

2 个答案:

答案 0 :(得分:2)

问题在于Ninject.Web.WebApi。由于某种原因,它是两次注册过滤器。将软件包更新到最新版本(v 3.2.1)修复了该问题。

答案 1 :(得分:1)

我在WebAPIconfig.cs中注册了AuthorizeAttribute:

public static void Register(HttpConfiguration config)
{
   config.Filters.Add(new Global.Security.MyAuthorizeAttribute());

此外,我使用属性修饰了方法。

[MyAuthorize]
public IHttpActionResult Get(string name)

这导致public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)方法被调用两次。

解决方案要么全局设置(作为配置过滤器),要么单独向方法添加属性。