在ASP.NET中实现404的最佳方式

前端之家收集整理的这篇文章主要介绍了在ASP.NET中实现404的最佳方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图确定在标准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";

你也可以在这里很好地处理各种其他错误代码

Google一般会遵循302,然后遵守404状态代码,因此您需要确保在错误页面上返回该状态代码

原文链接:https://www.f2er.com/aspnet/254526.html

猜你在找的asp.Net相关文章