Best way to implement a 404 in ASP.NET Best way to implement a 404 in ASP.NET asp.net asp.net

Best way to implement a 404 in ASP.NET


Handle this in your Global.asax's OnError event:

protected void Application_Error(object sender, EventArgs e){  // An error has occured on a .Net page.  var serverError = Server.GetLastError() as HttpException;  if (serverError != null){    if (serverError.GetHttpCode() == 404){      Server.ClearError();      Server.Transfer("/Errors/404.aspx");    }  }}

In you error page, you should ensure that you're setting the status code correctly:

// If you're running under IIS 7 in Integrated mode set use this line to override// IIS errors:Response.TrySkipIisCustomErrors = true;// Set status code and message; you could also use the HttpStatusCode enum:// System.Net.HttpStatusCode.NotFoundResponse.StatusCode = 404;Response.StatusDescription = "Page not found";

You can also handle the various other error codes in here quite nicely.

Google will generally follow the 302, and then honour the 404 status code - so you need to make sure that you return that on your error page.


You can use the web.config to send 404 errors to a custom page.

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">        <error statusCode="403" redirect="NoAccess.htm" />        <error statusCode="404" redirect="FileNotFound.htm" />    </customErrors>