如何在ASP.NET-MVC中显示自定义404页面?

时间:2009-09-02 14:52:40

标签: asp.net asp.net-mvc routing url-routing httpapplication

当我的网站上有任何网址为404时,我想显示使用ASP.NET-MVC呈现的自定义404页面。 Hoewever我不想使用通配符路由方法,因为这会禁用标准的webforms。我的代码目前看起来像这样:

if (serverException is HttpException && ((HttpException)serverException).GetHttpCode() == 404)
{
 //Server.Transfer("~/Test.aspx"); //1
 //Server.Transfer("~/error/gf54tvmdfguj85fghf/404"); //2
}

此代码位于App_Error

// 1确实有用。 Test.aspx是一个标准的webform

// 2不起作用,因为它是一个asp.net-mvc路由

如何让MVC路由工作?

1 个答案:

答案 0 :(得分:-1)

您可以使用应用程序错误事件......如下所示:

 protected void Application_Error(object sender, EventArgs e)
{
  //Check if it's a 404 error:
  Exception exception = Server.GetLastError();
  HttpException httpException = exception as HttpException;

  if(httpException.GetHttpCode() == 404) {
      //Redirect to the error route
     Response.Redirect(String.Format("~/Error/404/?message={0}", exception.Message));
  }
}