我怎么能抓住MVC3异常并且不返回空白视图?

时间:2011-10-12 03:15:15

标签: asp.net-mvc-3 exception-handling

我想在override方法OnException中处理异常,代码如下: 如果我设置filterContext.ExceptionHandled = true; 返回视图将显示一个空白视图。 我不希望它重定向到500页。 我怎么能这样做?

protected override void OnException(ExceptionContext filterContext)
{
    base.OnException(filterContext);

    var exception = new HttpException(null, filterContext.Exception);
    if (exception.GetHttpCode() == (int)HttpStatusCode.InternalServerError)
    {
        if (WebConstants.systemHandleExceptionList.Contains(filterContext.Exception.GetType()))
        {
            //process the error
            SaveErrorMessage(filterContext.Exception.GetType().Name);

            filterContext.ExceptionHandled = true;
        }
        else
        {
            //record the unhandle message to log
            errorlog.Error("", filterContext.Exception);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以在将标志设置为true后立即将其重定向到其他页面。见下面的例子

RouteValueDictionary errorRouteValues = new RouteValueDictionary( new { controller = "Error", action = "Action" } );

filterContext.Result = new ActionRedirectResult( errorRouteValues );
filterContext.Cancel = true;