你如何正确处理ASP.NET中的404错误?

时间:2010-10-11 05:24:03

标签: asp.net response

在web.config中,您可以添加此代码来处理404错误:

<customErrors mode="Off" defaultRedirect="ErrorPage.aspx">
  <error statusCode="404" redirect="/Site-Map"/>
</customErrors>

这可以很好地通过此网址http://www.fundraising.com.au/thisisnotapage

看到

但是,根据此网站http://gsitecrawler.com/tools/Server-Status.aspx,此不存在页面的响应代码为200,而不是404.

虽然此页面http://www.nuenergy.com.au/thisisnotapage确实在http://gsitecrawler.com/tools/Server-Status.aspx显示404并重定向到另一个页面。

如何在ASP.NET中实现后期? 我需要将响应设置为404并显示另一个页面。

2 个答案:

答案 0 :(得分:1)

custom errors section employs the HttpHandler拦截你没有页面然后redirects the response的事实,以便服务器返回Site-Map而不是可用资源,因此200状态是正确的好像请求首先是Site-Map

您最终希望提供两个版本的Site-Map,一个是实际请求(200),另一个是自定义错误响应(404)。我将创建另一个版本的Site-Map页面OnError-Site-Map,扩展页面类以继承它的功能,然后overriding the http response code,以便它提供您想要的404状态,但仅限于该扩展版本。然后,将其放在web.config的自定义错误部分中。

答案 1 :(得分:1)

要让您的页面返回404状态,请将以下代码添加到Page_Load事件:

Protected Sub Page_Load1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Response.Status = "404 Not Found"

End Sub