【发布时间】:2018-09-03 22:20:49
【问题描述】:
我想将不同数量的参数传递给 ActionFilter。示例:
[TypeFilter(typeof(AuthorizeFilter), Arguments = new object[] {PolicyName.CanUpdateModule, PolicyName.CanReadModule })]
public async Task<IActionResult> PutModule([FromRoute] Guid id, [FromBody] Module module)
我定义了如下过滤器,但出现错误 “InvalidOperationException:找不到适合类型'MyApp.AuthFilters.AuthorizeFilter'的构造函数。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。”。我该如何解决这个问题?
public class AuthorizeFilter : ActionFilterAttribute
{
private readonly IAuthorizationService _authService;
private readonly string[] _policyNames;
public AuthorizeFilter(IAuthorizationService authService,params string[] policyNames)
{
_authService = authService;
_policyNames = policyNames.Select(f => f.ToString()).ToArray();
}...
}
【问题讨论】:
-
如果您在构造函数中指定参数,例如
public AuthorizeFilter(IAuthorizationService authService, string canUpdate, string canRead),它是否有效 -
是的,如果单独声明,它确实有效。
标签: c# asp.net-core asp.net-core-2.0