在我的MVC3应用程序中,我有很多控制器和操作。有时在执行操作时会引发异常。我希望能够记录它并让MVC处理异常。
像这样的伪代码:
try {
MvcInvokeControllerAction( controller, action, params );
} catch( Exception e ) {
trace( "Error while invoking " + controller + "-" +
action + " with " + params + " details: " + getDetails( e ) );
throw;
}
我想要的是能够在MVC首次处理之前捕获异常,因为有时MVC踢入会引发另一个异常,我在Application_Error()
中看到后者并且原始异常很多。
我如何实现这样的挂钩?
答案 0 :(得分:1)
您可以在 Basecontrollor 上覆盖OnException Method。
这将是Controllor操作中所有异常的Catch块。只需从Basecontrollor
中排除所有控制器protected override void OnException(ExceptionContext filterContext)
{
}
实施例
public class BaseController : Controller
{
protected override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
// Handle error here
}
}
public class TestController : BaseController
{
public ActionResult Index()
{
// If any exceptions then will be caught by
// BaseController OnException method
}
}