试图了解MVC管道:
看来顺序是这样的:
授权筛选器
操作执行
行动执行
已执行操作
结果执行
创建操作结果
已执行onResultExecuted
写入响应流
什么时候Controller.OnException相对于ExceptionFilterAttribute.OnException运行?

最佳答案

它可能在某个地方被记录下来,至少在源代码中,但我只是做了一个小实验:

// in MyHandleErrorAttribute, globally configured
public override void OnException(ExceptionContext filterContext)
{
    Debug.Print("HandleErrorAttribute.OnException 1");
    base.OnException(filterContext);
    Debug.Print("HandleErrorAttribute.OnException 2");
}

...

// in HomeController
protected override void OnException(ExceptionContext filterContext)
{
    Debug.Print("Controller OnException 1");
    base.OnException(filterContext);
    Debug.Print("Controller OnException 2");
}

输出窗口显示:
handleerrorattribute.onexception 1
handleerrorattribute.onexception 2
控制器1异常1
控制器1异常2

关于c# - 是否在ExceptionFilter之前调用Controller.OnException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29880689/

10-12 23:51