Jia*_*nYA 5 asp.net-core-mvc asp.net-core
我有这个想要调用的动作过滤器,我已经在 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);
}
}
Run Code Online (Sandbox Code Playgroud)
启动文件
services.AddScoped<LogUserNameFilter>();
Run Code Online (Sandbox Code Playgroud)
类声明
[LogUserNameFilter]
public class HomeController : Controller{
}
Run Code Online (Sandbox Code Playgroud)
为了使用类作为属性,该类应该继承该类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);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在MSDN中找到更多使用信息
| 归档时间: |
|
| 查看次数: |
999 次 |
| 最近记录: |