C# Thinktecture资源授权,未设置授权管理器

C# Thinktecture资源授权,未设置授权管理器,c#,thinktecture,C#,Thinktecture,我正在尝试使用github的Thinktecture示例构建一个示例web应用程序 现在,我在控制器中有一个操作,它用authorize属性修饰: [ResourceAuthorize("Edit", "Resource")] public ActionResult Edit() { return View(); } 我实施了自己的授权管理器: public class AuthorizationManager : ResourceAuthoriza

我正在尝试使用github的Thinktecture示例构建一个示例web应用程序

现在,我在控制器中有一个操作,它用authorize属性修饰:

[ResourceAuthorize("Edit", "Resource")]
    public ActionResult Edit()
    {
        return View();
    }

我实施了自己的授权管理器:

 public class AuthorizationManager : ResourceAuthorizationManager
{
    public override Task<bool> CheckAccessAsync(ResourceAuthorizationContext context)
    {
        var resource = context.Resource.First().Value;

        if (resource == "Resources")
        {
            return CheckResourcesAccessAsync(context);
        }
        else
        {
            return Nok();
        }
    }

我想也许我必须在web.config中注册经理,如下所示:

 <system.identityModel>
<identityConfiguration>
    <claimsAuthenticationManager type="Namespace.xy.AuthorizationManager, Namespace.xy" />
</identityConfiguration>
</system.identityModel>


它不起作用。我做错了什么?

解决方案是在启动中注册authorizationmanager:

 app.UseResourceAuthorization(new MyAuthorizationManager());

此外,在使用app.UseWebApi(config)注册Web Api之前,必须先注册它。否则你会得到同样的错误,正如这里所说的:马哈茂德·阿里的这一评论非常重要,解决了我的问题。
 app.UseResourceAuthorization(new MyAuthorizationManager());