You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core自定义Authorization Filter运行时无法匹配构造函数报错如何解决

问题根因

你遇到的构造函数匹配错误和Startup.cs配置无关,问题出在RoleRequirementAttribute的Arguments赋值逻辑上:
TypeFilterAttribute的Arguments属性需要传入构造函数所有参数组成的object数组,你当前直接将string[]类型的角色列表赋值给Arguments,框架会误以为你要给Filter的构造函数传入和数组长度相等的N个独立string参数,和你实际定义的「单个string[]参数」的构造函数不匹配,因此抛出找不到合适构造函数的异常。

修复方案

仅需修改RoleRequirementAttribute的代码,把角色数组作为单个参数包裹在object数组中即可:

public class RoleRequirementAttribute : TypeFilterAttribute
{
    public RoleRequirementAttribute(string[] roleNames) : base(typeof(RoleRequirementFilter))
    {
        // 将角色数组作为单个构造参数传入
        Arguments = new object[] { roleNames };
    }
}

补充说明

你不需要在Startup.cs中额外注册RoleRequirementFilter服务,TypeFilterAttribute会自动从DI容器中解析依赖并完成Filter的实例化。


内容的提问来源于stack exchange,提问作者Soheil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:15:07