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

时间:2009-12-29 22:05:04

标签: asp.net-mvc error-handling actionfilterattribute

我正在尝试按照ScottGu的blog

使用动作过滤器属性实现错误处理

我的代码如下:

[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();
    }

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

OhDearACrash:用户代码

未处理异常

NullRefCrash:NullReferenceException未被用户代码

处理

所以默认[HandleError]会选择未处理的异常,它会路由到处理错误的View / Shared / Error.aspx。

如何处理未处理的异常?

1 个答案:

答案 0 :(得分:5)

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

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

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