0

我正在做一个团队项目,我处于以下情况:

我创建了自己的 Exception 类,我希望处理所有抛出的 myException 类型的异常并自动重定向到错误视图,我可以在其中很好地显示错误,这是可以的。这是我在 Web.config 中添加的内容:

<customErrors mode="On" defaultRedirect="Error" />

问题是我希望正常抛出所有其余异常,查看有关它的所有信息,包括堆栈跟踪、源文件和行错误,这对团队项目非常有用。

我已经尝试过 [HandleError(ExceptionType=typeof(myException)],但它没有用。

我还尝试覆盖控制器的 OnException 函数,如果异常不是 myException,那么我会再次抛出它,但我仍然会进入错误视图。

protected override void OnException(System.Web.Mvc.ExceptionContext filterContext)
{
    if (filterContext.Exception.GetType() != typeof(myException)) {
        throw filterContext.Exception;
    }
    base.OnException(filterContext);
}

有什么想法可行吗?

谢谢。

4

1 回答 1

2

您可以通过关闭自定义错误来获得您想要的结果(这样对于所有错误,您都会显示堆栈跟踪),并将您想要的异常重定向到您需要的控制器/视图(这样一个友好的页面将是显示)。

您可以为所有控制器定义一个基本控制器,并使用以下内容覆盖其 OnException 方法:

        if (filterContext.Exception.GetType() == typeof(YourCustomException))
        {
            filterContext.ExceptionHandled = true;
            filterContext.Result = RedirectToAction("ActionName", "ControllerName", new { customMessage  = "You may want to pass a custom error message, or any other parameters here"});
        }
        else
        {
            base.OnException(filterContext);
        }
于 2012-05-14T07:32:28.887 回答