2013-06-12 42 views
8

爲什麼asp.net在執行正常的404響應時沒有自定義錯誤,以便在打開自定義錯誤時用302或200進行響應?ASP.NET自定義錯誤頁面HTTP響應

因此,例如,我已經嘗試了所有的以下內容:

<customErrors defaultRedirect="Error.aspx" mode="Off"> 
    <error statusCode="404" redirect="Error.aspx?status=404" /> 
</customErrors> 

<httpErrors> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/error.aspx?status=404" responseMode="ExecuteURL" /> 
</httpErrors> 

<httpErrors> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/error.aspx?status=404" responseMode="Redirect" /> 
</httpErrors> 

至於我可以告訴頂部一個給人以302,因爲它重定向到錯誤頁面,第二個給出了200由於某種原因,最後一個也給了302.這似乎是愚蠢的,因爲我仍然想要404(或任何其他錯誤代碼),但顯示友好的消息。

我意識到我可以發送一個不同的迴應與我的錯誤頁面,但似乎給404錯誤頁面上的代碼,並保持原來的請求302。

除非我失去了一些東西......

回答

4

你是對的,當customErrors啓用ASP.NET的行爲有點古怪。總之,您可以設置redirectMode="ResponseRewrite"customErrors,並在您的error.aspx頁面中專門設置響應代碼。

我已經在此處發帖了:Keep ASP.NET error pages out of search engines

相關問題