当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在ASP.NET中实现404的最佳方法》经验,为你挑选了2个好方法。

我正在尝试确定在标准ASP.NET Web应用程序中实现404页面的最佳方法.我目前在Global.asax文件中的Application_Error事件中捕获404错误,并重定向到友好的404.aspx页面.问题是请求看到302重定向,然后缺少404页面.有没有办法绕过重定向并使用包含友好错误消息的立即404进行响应?

Googlebot等网络抓取工具是否关心非现有页面的请求是否返回302后跟404?



1> Zhaph - Ben ..:

在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 (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";

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

Google通常会遵循302,然后尊重404状态代码 - 因此您需要确保在错误页面上返回该状态代码.



2> Robin Day..:

您可以使用web.config将404错误发送到自定义页面.

    
        
        
    


如果你将redirectMode ="ResponseRewrite"添加到它将重定向.在发送"404 Not Found"状态代码之前,它也不会发送"302 Found"状态代码.你可以随时查看msdn的链接:http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有