2012-09-17 57 views
4

我一直在試圖讓我的web應用重定向到自定義404頁面。它適用於所有網址,除非它們具有「.aspx」擴展名.aspx擴展的自定義404頁面錯誤

服務器是Windows Server 2008,以下是我在web.config中的設置(以google.com爲例):

<customErrors defaultRedirect="http://www.google.com" mode="On" redirectMode="ResponseRedirect"></customErrors> 

<httpErrors errorMode="Custom"> 
<clear /> 
<remove statusCode="500" subStatusCode="-1" /> 
<remove statusCode="404" subStatusCode="-1" /> 
<error statusCode="404" prefixLanguageFilePath="" path="/404-Page/" responseMode="ExecuteURL" /> 
<error statusCode="500" prefixLanguageFilePath="" path="/404-Page/" responseMode="ExecuteURL" /> 
</httpErrors> 

再次HTTP錯誤的一切,但「的.aspx」

回答

0

爲了解決這個問題,我們最終不得不創建一個劫持任何錯誤的模塊,並將用戶轉移到我在web.config中設置的自定義404頁面(在customErrors下)。該模塊將增加一個事件處理程序,只要應用得到一個錯誤:

public void Init(HttpApplication context) 
    { 
     context.Error += new EventHandler(FileNotFound_Error); 
    } 

而且功能FileNoteFound_Error做重定向。

0

customErrors元素提供有關ASP.NET應用程序的自定義錯誤消息的信息的擴展工作。嘗試將error子元素添加到customErrors元素中,以獲取要陷入的特定HTTP錯誤代碼。

<error statusCode="404" redirect="error404.htm"/> 
+0

我試過了。仍然會遇到同樣的問題。 – Channafow

+0

當您在瀏覽器中輸入一個不存在的.aspx文件的URL時會發生什麼? – DaveB

+0

只需進入常規ASP錯誤頁面,而不是我的自定義頁面。 – Channafow

0

我在IIS6中有類似的問題。我最終在global.asax中的Application_Error中處理了它。爲了使它工作,我必須將404自定義頁面設置爲不存在的aspx頁面(如果將其設置爲現有的aspx頁面,它將被EPiServer的內部錯誤處理吞噬...)