如何处理ASP.NET MVC ActionResult异常?

时间:2012-07-31 13:35:58

标签: asp.net-mvc asp.net-mvc-2

我有一个自定义的ActionResult,当远程主机关闭连接时,它会更深入地遇到System.Web.HttpException。我已经覆盖了Controller的OnException方法,但它没有被抓到。 ASP.NET MVC管道已经完成执行我的Controller的Action,并且在遇到此异常时正在执行返回的ActionResult。

目前,它正在冒泡并将我的日志弄得乱七八糟。我宁愿不在记录时过滤掉这些,因为我不认为远程主机中止内容下载是错误的。

我宁愿直接处理这个错误,但我不知道在哪里。 Controller.OnException不起作用,所以我怀疑IExceptionFilter也会这样。我可以使用Application_OnError,但我担心这太高了。

还有更多的MVC' ish方式?

2 个答案:

答案 0 :(得分:2)

没有其他方法可以捕获Controller.OnException和Application_OnError之间的异常。勇敢并使用Application_OnError

答案 1 :(得分:2)

您可以使用HandleErrorAttribute来处理控制器操作中抛出的异常。正如您在问题中指出的那样,我怀疑错误超出了此属性的范围。这只会留下Application_OnError。

您可以在错误处理代码中添加白名单,以忽略特定错误(具体代码的特定类型以及特定的源/堆栈跟踪)。