asp.net-mvc-3 - 在MVC 3中显示自定义错误页面不起作用!

标签 asp.net-mvc-3 error-handling custom-error-pages

我在Web.config中设置自定义错误启用:

<customErrors mode="On"/>

然后在Application_Start中输入以下内容:
protected void Application_Error(object sender, EventArgs e) {

    var ex = Server.GetLastError().GetBaseException();

    var routeData = new RouteData();

    if (ex.GetType() == typeof(HttpException)) {
        var httpException = (HttpException)ex;
        var code = httpException.GetHttpCode();
        routeData.Values.Add("status", code);
    } else {
        routeData.Values.Add("status", -1);
    }

    routeData.Values.Add("action", "Index");
    routeData.Values.Add("controller", "Error");
    routeData.Values.Add("error", ex);

    IController errorController = new Kavand.Web.Controllers.ErrorController();
    errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}

我也创建这样的错误 Controller :
public class ErrorController : Kavand.Web.Mvc.Kontroller
{
    public ActionResult  Index(int status, Exception error) {
        Response.StatusCode = status;
        HttpStatusCode statuscode = (HttpStatusCode)status;
        return View(statuscode);
    }
}

但是,当发生错误时,将显示黄页,而不是我的自定义 View !大家可以帮我吗?
非常感谢,问候

最佳答案

提取后,请不要忘记清除Application_Error中的错误:

protected void Application_Error(object sender, EventArgs e)
{
    var ex = Server.GetLastError().GetBaseException();
    Server.ClearError(); // <-- that's what you are missing
    var routeData = new RouteData();
    ...
}

同样重要的是,删除不再在HandleErrorAttribute中的RegisterGlobalFilters静态方法中添加的Global.asax全局属性,因为您不再需要它。

您可能还会发现following answer有用。

关于asp.net-mvc-3 - 在MVC 3中显示自定义错误页面不起作用!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498004/

相关文章:

c# - MVC4中的自定义403错误页面未显示

c# - 自定义错误重定向不起作用

html - ASP.NET MVC 模型列表绑定(bind)

asp.net-mvc-3 - WebSecurity.CreateUserAndAccount Sql 整理问题

javascript - 捕获 net::ERR_NAME_NOT_RESOLVED 以修复错误的 img 链接

Postgresql:将一些正确的默认值或 NA 插入到具有错误类型值的表中?

asp.net-mvc - 真的有必要测试 Controller 方法吗?

c# - 将枚举的内容获取到下拉列表

php - 超时 fatal error 处理

c# - IIS 7.5 Windows 2008 R2 远程提供 500,本地提供自定义 404