如何在全局错误过滤器(MVC4)中将静态页面作为ViewResult返回?

时间:2013-01-22 00:57:00

标签: asp.net-mvc asp.net-mvc-4

我正在尝试编写一个FilterAttribute,IExceptionFilter全局错误处理属性,该属性应该提供自定义错误视图。我重写public void OnException(ExceptionContext context)并执行

context.HttpContext.Response.Clear();
context.HttpContext.Response.TrySkipIisCustomErrors = true;
context.HttpContext.Response.StatusCode = 403;

context.ExceptionHandled = true;
context.Result = new ViewResult { ... not sure what to put here... }

这是我被困的地方。 到目前为止我尝试过的所有内容都会让我看到内部服务器错误页面。我怀疑我想要像

这样的东西
context.Result = new ViewResult
{
    ViewName = "~/Errors/ReadOnlyMode.cshtml",
}

然而,这似乎不起作用(内部服务器错误......)。

2 个答案:

答案 0 :(得分:3)

这应该有效

context.Result = new ViewResult
{
    ViewName = "~/Views/Errors/ReadOnlyMode.cshtml",
}

答案 1 :(得分:1)

context.Result = new RedirectToRouteResult(
    new RouteValueDictionary 
    { 
        { "Controller", "Errors" }, 
        { "Action", "ReadOnlyMode" } 
    });

这对我来说很好。