受限属性未在 Startup.Cs 中注册
Restricted Attribute did not register in Startup.Cs
我在 Asp.net Core 2.0 项目中有一个受限属性 class,我用这个属性装饰了我的控制器,但是当我 运行项目我也把调试点放在上面
我在这里注册这个属性
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 } }
您的 RestrictedAttribute
声明不正确。您只需要从 ActionFilterAttribute
class 派生,因为它已经从 IActionFilter
接口派生。
并且在您的 class 中,您需要 override
ActionFilterAttribute
class 的 OnActionExecuting
而不是实现接口方法,即您不应该IActionFilter.OnActionExecuting
因为那不是需要实现的方法。
正确的实现是:
public class RestrictedAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//Other Code
}
}
此外,您不需要在 AddMvc()
中添加过滤器到 config.Filters
。没有它也能工作:-)
我在 Asp.net Core 2.0 项目中有一个受限属性 class,我用这个属性装饰了我的控制器,但是当我 运行项目我也把调试点放在上面 我在这里注册这个属性
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 } }
您的 RestrictedAttribute
声明不正确。您只需要从 ActionFilterAttribute
class 派生,因为它已经从 IActionFilter
接口派生。
并且在您的 class 中,您需要 override
ActionFilterAttribute
class 的 OnActionExecuting
而不是实现接口方法,即您不应该IActionFilter.OnActionExecuting
因为那不是需要实现的方法。
正确的实现是:
public class RestrictedAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//Other Code
}
}
此外,您不需要在 AddMvc()
中添加过滤器到 config.Filters
。没有它也能工作:-)