C# asp.net core MapControllerRoute与我的路线不匹配(未启动授权)

C# asp.net core MapControllerRoute与我的路线不匹配(未启动授权),c#,.net,asp.net-core,.net-core,C#,.net,Asp.net Core,.net Core,我使用ASP.NET Core 3.1.5,我有以下代码: app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "UserAccessRoutes", pattern: "UserAccess/GetUsers/{id?}", de

我使用ASP.NET Core 3.1.5,我有以下代码:

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "UserAccessRoutes",
                pattern:  "UserAccess/GetUsers/{id?}",
                defaults: new { controller = "UserAccess", action = "GetUsers" }
            ).RequireAuthorization(new AuthoriseAttribute("Test"));


            endpoints.MapControllerRoute("default", "{controller}/{action}/{id?}");
        });
        
        
public class UserAccessController : ControllerBase
{
    private readonly IUsersService usersService;

    public UserAccessController(IUsersService usersService)
    {
        this.usersService = usersService;
    }

    [HttpGet]
    public async Task<UserServerDto> GetUsers(long serverId)
    {
        ...somecode
    }
}
app.UseEndpoints(端点=>
{
endpoints.MapControllerRoute(
名称:“UserAccessRoutes”,
模式:“UserAccess/GetUsers/{id?}”,
默认值:新建{controller=“UserAccess”,action=“GetUsers”}
).要求重新授权(新授权属性(“测试”);
MapControllerRoute(“默认值”,“{controller}/{action}/{id?}”);
});
公共类UserAccessController:ControllerBase
{
专用只读IUsersService用户服务;
公共用户访问控制器(IUsersService usersService)
{
this.usersService=usersService;
}
[HttpGet]
公共异步任务GetUsers(长服务器ID)
{
…一些代码
}
}

当我打电话时http://localhost:5000/useraccess/getusers?id=10 调用了GetUsers,但它跳过了自定义授权属性。为什么它与第一条地图路线不匹配?

您是否在
启动
类中添加了对
app.UseAuthorization()
的调用?是的。如果我在controller方法中直接使用authorize属性,它就会工作。当我像在我的post中那样使用它时,授权不起作用。您定义
测试
策略的代码是什么?另外,我注意到属性是
authorize
,带有
s
,那么这是一个自定义属性吗?我刚刚发现
RequireAuthorization
的重载接受我的调用为
IAuthorizeData
重载,因此它正在检查策略和我拥有并使用自定义权限的自定义属性不起作用。据我所知,
新授权属性(“测试”)
表示将使用测试策略。你设置了测试策略吗?如果可能,请张贴相关的测试政策代码。此外,如果您想使用
RequireAuthorization
处理策略,我建议您可以直接将策略名称设置为参数,如
。RequireAuthorization(“Test”)