You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC重写OnActionExecuting时访问修饰符错误排查

ASP.NET Core MVC基类重写方法报错的解决方法

你出错的原因很直接:C#规定重写父类方法时,不能缩小方法的访问权限范围。你基类里写的protected override void OnActionExecuting用了protected修饰符,但ASP.NET Core的Controller类中,OnActionExecuting方法原本是public的,把访问权限从public改成protected属于缩小范围,所以编译器报错。

修正方法很简单,把修饰符改成和父类一致的public就行:

public class BaseController : Controller
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
    }
}

如果你的需求是只想让子类内部访问自定义逻辑、不想对外暴露,可以额外封装一个protected的方法,在重写的public方法里调用它:

public class BaseController : Controller
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // 调用自定义的内部逻辑
        HandleActionExecuting(filterContext);
        // 必须调用父类的方法保证原有逻辑执行
        base.OnActionExecuting(filterContext);
    }

    protected void HandleActionExecuting(ActionExecutingContext filterContext)
    {
        // 这里写你自己的业务逻辑
    }
}

内容的提问来源于stack exchange,提问作者MTplus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:35:19