使用ErrorController而不是直接视图处理错误

Bor*_*ens 6 c# error-handling asp.net-mvc error-logging

我试图了解MVC中的错误处理.我正在寻找的是一种集中的方式来捕获错误,记录它们,如果可能的话解决它们,如果nessecary采取其他行动并最终向用户显示正确的视图.

我想我可以使用[HandleError]过滤器,但我没有看到任何方法将它路由到Controller/Action.我看到的唯一选择是将其直接指向视图.

CVe*_*tex 4

MVC 附带的HandleErrorAttribute是一个非常基本的 IExceptionFilter。

你有几个选择来实现我认为你想要的。

您可以在操作/控制器上使用 [HandleError (Type=typeof(MyException),View="ErrorView")] 或实现您自己的

HandleErrorAttribute并不是很复杂。我认为 MS 建议您复制此代码并进行修改以满足您的要求。

OnException 重写使您可以通过 ExceptionContext 访问您可能需要的所有信息 - 控制器、操作、路由数据等。

请记住设置 ExceptionHandled。然后您可以将 filterContext.Result 设置为一个新的 RedirectToAction 实例,该实例重定向到您的 ErrorController 和操作 - 显然您可以使用属性公开特定的控制器和操作。