ASP.Net MVC使用动作过滤器属性处理错误

Nic*_*ray 1 error-handling asp.net-mvc actionfilterattribute

我正在尝试根据ScottGu的博客使用动作过滤器属性实现错误处理

我的代码如下:

[HandleError]
[HandleError(ExceptionType = typeof(NullReferenceException), View = "CustomError")]
public class ArticlesController : Controller
{
    public object OhDearACrash()
    {
        throw new Exception("Oh Dear");
    }

    public object NullRefCrash()
    {
        throw new NullReferenceException();
    }
Run Code Online (Sandbox Code Playgroud)

我遇到一个问题,我无法点击CustomError视图,因为我在抛出异常时收到异常

OhDearACrash:用户代码未处理异常

NullRefCrash:NullReferenceException未被用户代码处理

所以未处理的异常由Default [HandleError]选取,它将路由到处理错误的View/Shared/Error.aspx.

如何处理未处理的异常?

jer*_*enh 5

动作过滤器逐个执行.在您的情况下,问题可能是通用的HandleError操作过滤器在特定的之前执行.

您可以通过设置操作过滤器的"订单"属性来影响执行顺序:

[HandleError(Order = 2)]
[HandleError(Order = 1, ExceptionType = typeof(NullReferenceException), View = "CustomError")]
public class ArticlesController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)