我试图确定在标准ASP.NET Web应用程序中实现404页面的最佳方式。我目前在Global.asax文件中的Application_Error事件中捕获404错误,并重定向到友好的404.aspx页面。问题是,请求看到一个302重定向,其后是404页面缺失。有没有办法绕过重定向,并用立即404包含友好的错误消息响应?
如果对非现有网页的请求返回302,然后是404,那么Googlebot等网络抓取工具是否会提供保护?
解决方法
在你的Global.asax的OnError事件中处理这个:
protected void Application_Error(object sender,EventArgs e){ // An error has occured on a .Net page. var serverError = Server.GetLastError() as HttpException; if (null != serverError){ int errorCode = serverError.GetHttpCode(); if (404 == errorCode){ Server.ClearError(); Server.Transfer("/Errors/404.aspx"); } } }
// 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.NotFound Response.StatusCode = 404; Response.StatusDescription = "Page not found";