我正在try 确定在标准ASP.NET Web应用程序中实现404页面的最佳方式.我目前在Global.asax文件的Application_Error事件中捕获了404个错误,并重定向到友好的404.aspx页面.问题是请求看到一个302重定向,后面跟着一个404页面丢失.有没有办法绕过重定向并用包含友好错误消息的立即404进行响应?
如果对不存在的页面的请求返回302后跟404,像谷歌机器人这样的网络爬虫会在意吗?
我正在try 确定在标准ASP.NET Web应用程序中实现404页面的最佳方式.我目前在Global.asax文件的Application_Error事件中捕获了404个错误,并重定向到友好的404.aspx页面.问题是请求看到一个302重定向,后面跟着一个404页面丢失.有没有办法绕过重定向并用包含友好错误消息的立即404进行响应?
如果对不存在的页面的请求返回302后跟404,像谷歌机器人这样的网络爬虫会在意吗?
在全局处理这个问题.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 (serverError != null){
if (serverError.GetHttpCode() == 404){
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";
您还可以很好地处理这里的各种其他错误代码.
谷歌通常会遵循302,然后遵循404状态代码-因此您需要确保在错误页面上返回该代码.