我有要调用的动作过滤器,我已经在Startup.cs中声明了它。但是,当我在班级上方调用它时,出现此错误:
LogUserNameFilter不是属性类
我不确定我缺少什么。
public class LogUserNameFilter : IActionFilter
{
private readonly RequestDelegate next;
public LogUserNameFilter(RequestDelegate next)
{
this.next = next;
}
public void OnActionExecuted(ActionExecutedContext context)
{
throw new NotImplementedException();
}
public void OnActionExecuting(ActionExecutingContext context)
{
LogContext.PushProperty("UserName", context.HttpContext.User.Identity.Name);
}
}
Startup.cs
services.AddScoped<LogUserNameFilter>();
类声明
[LogUserNameFilter]
public class HomeController : Controller{
}
答案 0 :(得分:2)
为了将类用作属性,该类应继承Attribute
类,具体而言,您应继承ActionFilterAttribute
:
public class LogUserNameFilter : ActionFilterAttribute, IActionFilter
{
private readonly RequestDelegate next;
public LogUserNameFilter(RequestDelegate next)
{
this.next = next;
}
public void OnActionExecuted(ActionExecutedContext context)
{
throw new NotImplementedException();
}
public void OnActionExecuting(ActionExecutingContext context)
{
LogContext.PushProperty("UserName", context.HttpContext.User.Identity.Name);
}
}
您可以在MSDN
中找到更多使用信息。