2009-12-11 53 views
10

我在web.config中得到這個:HttpError不會顯示自定義錯誤頁

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound.aspx" responseMode="Redirect" /> 
    <error statusCode="500" prefixLanguageFilePath="" path="/Error/ServerError.aspx" responseMode="Redirect" /> 
</httpErrors> 

但IIS仍然顯示了內置的錯誤頁面。

任何想法?

回答

5

這是我如何使用它和它的作品對我來說,它看起來除了subStatusCode指令和ExecuteURL非常相似。


<httpErrors> 
    <!--Remove inherited 500 error page setting --> 
    <remove statusCode='500' subStatusCode='-1'/> 
    <!--Override the inherited 500 error page setting with the 'My500.html' as its path--> 
    <error statusCode='500' subStatusCode='-1' prefixLanguageFilePath='' path='/My500.html' responseMode='ExecuteURL'/> 
</httpErrors> 
2

看起來好像您使用的是服務器相對URL,請嘗試設置responseMode="ExecuteURL",從MSDN

ExecuteURL

供應動態內容(例如, .asp文件)在路徑 屬性的定製的錯誤指定。如果 responseMode設置爲ExecuteURL,則 路徑值必須是服務器相對的 URL。該數值是1

重定向

將與客戶端瀏覽器的路徑指定的URL 屬性,它 包含自定義錯誤文件。如果 responseMode設置爲重定向,則 路徑值必須是絕對URL。 的數值是2

19

您也可根據需要設置在httpErrors元素的existingReponse屬性是這樣的:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <clear /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" /> 
    <error statusCode="500" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" /> 
</httpErrors> 
+0

這是什麼原因引起的問題與最新的果園1.4,歡呼聲。 – Sarkie 2012-05-03 13:43:47

+0

@Kiquenet http://www.iis.net/configreference/system.webserver/httperrors 不知道但自動解決了我的問題。 – Ernesto 2016-06-08 22:44:37

+0

*** ErrorHandler.aspx ***的源代碼是什麼? – Kiquenet 2016-06-09 12:51:42

0

確保你有適當的功能設置在IIS錯誤頁面重定向。要檢查這一點,請從IIS管理器的錯誤頁面頁面單擊編輯功能設置,並確保如果您正在測試Web服務器本身的重定向,則會檢查自定義錯誤頁面。如果您正在遠程測試,您可以離開本地請求的詳細錯誤和遠程請求的自定義錯誤頁面被選中。這似乎是我的測試環境中的默認選項。

3

如果您使用的是ExecuteURL,則自定義錯誤頁面路徑必須與應用程序本身在同一個應用程序池中。

由於架構原因,如果IIS 7.0位於同一個應用程序池中,它只能執行該URL。使用重定向功能在不同的應用程序池中執行自定義錯誤。

相關問題