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

ASP.NET Core Web API自定义属性如何传递参数?

解决自定义授权属性注册后无法解析字符串依赖的问题

问题场景

要实现一个带参数的自定义权限校验属性,期望在API路由上用[SecurityFunctionFilter("GETORDERS")]的形式标记,用来在进入路由前检查用户权限。具体操作:

  • 创建了继承Attribute并实现IAuthorizationFilter接口的过滤器类,通过构造函数接收权限标识字符串参数
  • 在OnAuthorization方法中编写权限校验逻辑
  • 在Program.cs中将该过滤器注册为Scoped服务

运行时在builder.Build()环节报错,提示无法解析string类型服务以激活SecurityFunctionFilter

解决方案

直接从Program.cs的服务注册代码中移除SecurityFunctionFilter的注册项即可。

原因说明

这种基于Attribute的过滤器是直接通过特性标记的方式实例化的,并不依赖DI容器来创建实例。如果强行将其注册到DI,容器会尝试解析构造函数中的字符串参数,但这个参数是在标记特性时传入的固定值,并非DI容器中的服务,因此会触发解析失败的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:02:05