2010-10-05 64 views
6

我創建了一個名爲404.aspx的404錯誤頁面,當我手動調用它時,它非常棒。 但在web.config和IIS 6.0中設置「自定義錯誤」後。它不能正常工作。IIS 6.0和ASPX 404自定義錯誤不起作用

例如,如果我以錯誤的方式鍵入URL,它將不起作用,並出現如下所示的消息。

XML Parsing Error: not well-formed 
Location: **http://domain/anything** (without an extension) 
Line Number 1, Column 2:<%@ page language="C#" masterpagefile="~/Public.master" autoeventwireup="true" inherits="_404, App_We 

而且,如果我輸入網址這樣的:HTTP:年底//domain/anything.ASPX(添加在.aspx),它會重定向到自定義錯誤404.aspx正確工作正常。

我該怎麼做才能做到這一點?

+1

莫非與此有關:HTTP://計算器。 com/questions/3704561/custom-error-pages-in-iis-6-0-using-aspx-pages – Castrohenge 2010-10-05 21:25:00

+0

同樣的作者也是。 – mxmissile 2010-10-05 21:39:31

回答

7

聽起來像您已將IIS自定義錯誤頁面類型設置爲File而不是Url

設置爲File只會導致IIS逐字地將錯誤頁面的內容呈現給響應流(即作爲靜態文件),而不是將HTTP重定向到錯誤頁面,從而導致頁面被ASP處理。淨。

IIS 6需要以如果使用URL的消息類型,可以輸入例如一個「站點內的絕對URL」:

/404.aspx

+0

這是我試過的冷杉選項。但無論我寫什麼,都會顯示一個黃色標註,並顯示以下消息:錯誤的URL格式。請在網站中輸入絕對網址。 – UXdesigner 2010-10-06 13:24:29

+0

如果我在URL中輸入任何不帶.aspx擴展名的東西,它將顯示一條錯誤消息,如果我鍵入任何頁面名稱並添加.aspx擴展名,它將帶有nice錯誤頁面。奇怪的事情。不知道還有什麼要做。 – UXdesigner 2010-10-06 13:38:56

+0

@UXDesigner - 查看我更新的答案。 – Kev 2010-10-06 15:03:07

2

我假設你的語法如下:

<customErrors 
     mode="RemoteOnly" 
     defaultRedirect="~/errors/GeneralError.aspx" 
/> 

要看到自己設置模式的自定義頁面爲「開」

<customErrors 
     mode="On" 
     defaultRedirect="~/errors/GeneralError.aspx" 
/> 

這些模式的定義如下:

  • 開 - 錯誤的細節不會顯示給任何人,甚至本地用戶。如果您指定了自定義錯誤頁面,則始終使用它。
  • 關 - 每個人都會看到錯誤的詳細信息,包括本地和遠程用戶。如果您指定了自定義錯誤頁面,則不會使用它。
  • RemoteOnly - 本地用戶將看到帶有堆棧跟蹤和編譯細節的詳細錯誤頁面,而遠程用戶將看到一個簡明頁面,通知他們發生了錯誤。如果自定義錯誤頁面可用,它將僅顯示給遠程用戶。
+0

我在我的web.config UXdesigner 2010-10-05 21:31:32

+0

謝謝,我很快修改了我的webconfig。我添加了這個: 但它幾乎相同。 :/ – UXdesigner 2010-10-05 21:39:43

+0

@UXdesigner - 我希望你編輯了現有的customErrors設置,並沒有添加第二個。 – Greg 2010-10-05 21:41:51