【发布时间】:2015-07-15 02:47:30
【问题描述】:
基本上,当我的应用程序有未处理的异常时,我希望它被 IIS 记录为未处理的异常(例如,以便可以在事件查看器上看到),但我也想将用户路由到错误控制器。
我已经覆盖了我的控制器的OnException 方法,以便将用户路由到自定义错误页面。问题的症结在于这段代码:
protected override void OnException(ExceptionContext filterContext)
{
filterContext.Result = RedirectToAction("GeneralError", "Error", new{ routeValueA = "some value", routeValueB = "some other value"});
filterContext.ExceptionHandled = false;
}
我的问题是这样的:如果我设置了filterContext.ExceptionHandled = false,那么我会得到一个黄屏死机,而不是被重新路由到我的错误处理控制器。如果我设置filterContext.ExceptionHandled = true,那么我会被重新路由,但异常不会记录为未处理的异常。
我知道我可以使用 web.config 设置静态错误页面,但我不想这样做,因为这样我就不能使用路由值动态地将数据发送到我的错误控制器。
我能否成功地将结果设置到我的filterContext.Result 而不标记filterContext.ExceptionHandled= true?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-4 iis exception-handling