我在Asp.net Core 2.0项目中有一个受限制的属性类,我用这个属性装饰我的控制器但是当我运行项目时这个类没有执行我也把调试点放在它上面 在这里我注册了这个属性
services.AddMvc(config =>
{
config.Filters.Add(typeof(RestrictedAttribute));
});
[Area("Admin")]
[Restricted]
public class MediaController : Controller
{}
public class RestrictedAttribute : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{ //Other Code } }
答案 0 :(得分:1)
RestrictedAttribute
的声明不正确。您只需要从已经从ActionFilterAttribute
接口派生的IActionFilter
类派生。
在您的班级中,您需要override
OnActionExecuting
类的ActionFilterAttribute
并且不要实现接口方法,即您不应该IActionFilter.OnActionExecuting
,因为那不是需要实施的方法。
正确的实施是:
public class RestrictedAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//Other Code
}
}
此外,您无需将过滤器添加到config.Filters
中的AddMvc()
。没有它会工作: - )