2011-07-13 58 views
8

我想將自定義錯誤頁面添加到我的Web應用程序。到目前爲止,我已經元素下添加這個到我的web.config文件:防止IIS 7.5使用web.config顯示默認錯誤頁面

<customErrors mode="On" > 
    <error statusCode="404" redirect="~/404.aspx"/> 
    <error statusCode="500" redirect="~/500.aspx"/> 
</customErrors> 

也能正常工作對於.NET觸及例如包含.aspx擴展名的URL錯誤。不過,我也希望爲網址顯示自定義錯誤,例如www.example.com/dasda

當前當我請求一個頁面(如上面的IIS 7.5)時,顯示它自己的錯誤消息。我已經元素下添加此:

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

我認爲這將使IIS顯示自定義錯誤頁,而不是它是默認的,但是這似乎並不如此。

我知道我可以在IIS本身設置一個自定義的錯誤頁面,但對於我的情況理想的解決方案是將此可配置在web.config中。

我曾嘗試加入到這個在Page_Load事件我的自定義錯誤頁的建議here

  Response.TrySkipIisCustomErrors = true; 

但是它並沒有從地方我自定義錯誤頁的顯示停止IIS的默認頁面。我也嘗試過建議here

<httpErrors > 
    <remove statusCode="404" subStatusCode='-1' /> 
    <error statusCode="404" path="~/404.aspx" prefixLanguageFilePath='' responseMode="Redirect" /> 
    <remove statusCode="500" subStatusCode='-1' /> 
    <error statusCode="500" path="~/500.aspx" prefixLanguageFilePath='' responseMode="Redirect" /> 
    </httpErrors> 

但是這也行不通。

那麼有沒有辦法通過配置web.config文件中的設置來防止IIS顯示默認錯誤頁面?

回答

14

我遇到的問題是,在默認情況下具有以下屬性errorMode選項:DetailedLocalOnly,自定義或詳細。

如果errorMode屬性未指定爲我所做的那麼默認爲DetailedLocalOnly(ref)。這意味着我不會看到顯示的自定義錯誤。

的起作用的配置設置爲:

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

的errorMode =「自定義」是很方便的測試自定義頁面是否正常工作,但可能是更方便的時候離開省略或明確設置爲errorMode =「DetailedLocalOnly 「用於調試目的。

+1

感謝Aesir發佈此信息。我可以用你的例子解決同樣的問題。 – GibboK

+2

這也解決了我的問題。謝謝! –

+1

感謝您發現errorMode標誌;缺乏效果讓我很煩惱。 – icelava

0

我認爲你需要強制IIS將CustomErrorModule用於用戶請求的任何資源。 嘗試下面的添加到您的web配置

<modules> 
     <add name="CustomErrorModule" type="customErrorModule" preCondition="" /> 
</modules> 

也看看下面的鏈接

https://serverfault.com/questions/53712/in-iis-7-how-do-i-set-up-a-default-error-document-for-any-error

+1

謝謝,web.config應該添加哪些部分?我試着把它放在httpModules和模塊部分,但都沒有工作。 – Aesir

+0

謝謝你的更新,但它仍然無法正常工作。我設法讓它工作。 – Aesir