2009-03-05 88 views
10

我正在研究IIS6,ASP.NET,VS2008。該網站使用自定義錯誤處理程序來捕獲404錯誤並提供備用頁面。當與形式的URL提出:IIS 404自定義錯誤不按預期方式工作

http://srv/crimson/articles/index

一切完美的作品。但形式的網址:

http://srv/crimson/blog.aspx

哪裏blog.aspx不存在,失敗,出現以下消息:

服務器錯誤/深紅「應用程序。說明:HTTP 404 ...

當我嘗試調試時,404處理程序中的斷點都沒有被命中。所以看起來有些東西在早些時候捕捉到這個請求。哪裏?如何讓它將請求傳遞給我的處理程序?

編輯 感謝那些回答,但沒有任何這些想法的工作。我決定以另一種方式解決問題。

回答

10

你可能會想試試這個:

在IIS6:

  • 打開 「屬性」 爲您的網站
  • 進入 「主目錄」 選項卡
  • 點擊「配置「
  • 尋找擴展名」.aspx「
  • 點擊 「編輯」
  • 支票說複選框 「確認文件是否存在」

編輯

什麼樣: http://msdn.microsoft.com/en-us/library/h0hfz6fc(VS.80).aspx

<customErrors defaultRedirect="sorry.htm" mode="On"> 
    <error statusCode="404" redirect="NotFound.aspx"/> 
</customErrors> 

由於「僅限遠程'指定自定義錯誤僅顯示給遠程客戶端,並且ASP.NET錯誤顯示給本地主機。

1

ASP.Net有它自己的自定義錯誤配置。

轉到您的虛擬目錄(Web應用程序)的ASP.Net配置並右鍵單擊 - > ASP.Net - >編輯配置 - >自定義錯誤。

+0

不確定你的意思。我在虛擬目錄中設置了一個自定義錯誤右鍵 - >屬性 - >自定義錯誤。這是應該工作,但沒有。如果你的意思是別的,我找不到它。 – Jon 2009-03-05 18:46:33

6

嗯,Assaf是對的,但要添加到他的答案我需要發佈一些代碼。

是的,Assaf的意思是其他ASP.NET提供它自己的錯誤處理,通過web.config配置。您可以通過IIS Admin管理單元或直接在web.config文件中進行管理。

內<的System.Web >元素,你應該有:

<customErrors defaultRedirect="sorry.htm" mode="RemoteOnly"> 
    <error statusCode="404" redirect="NotFound.aspx"/> 
</customErrors> 

您可以爲每個HTTP錯誤代碼配置不同的頁面,或讓默認重定向處理它們。

你會發現,你確實需要在了設置這些錯誤的頁面均的IIS自定義錯誤和ASP.NET配置,否則你會在這種情況下結束 - 一些網頁去你404和其他人使用您未定製的默認設置。

您還應該確保您的自定義404頁面實際返回404標頭以確保搜索引擎等正確對待它。

Response.StatusCode = 404; 
Response.StatusDescription = "Not found"; 
0

也許你得到了500這樣重定向404沒有被觸發。首先你可能會關注這個500錯誤。