1

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

目前,它正在冒泡并将我的日志作为错误而混乱。我不想在记录时过滤掉这些,因为我不认为远程主机中止内容的下载是错误的。

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

没有更 MVC 的方式吗?

4

2 回答 2

2

在 Controller.OnException 和 Application_OnError 之间没有其他点可以捕获异常。勇敢地使用 Application_OnError

于 2012-07-31T13:44:20.380 回答
2

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

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

于 2012-07-31T13:57:25.850 回答