2010-10-11 85 views
2

在web.config中,您可以添加該代碼來處理404錯誤:如何正確處理ASP.NET中的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和另一個頁面出現。

回答

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

爲了您的頁面返回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