customErrors與httpErrors

被抽考IIS網站的自訂HTTP 404錯誤網頁設定,學到新東西也釐清一些觀念,筆記備忘。

以Windows 2008 R2 IIS 7.5為例,網站管理介面有兩處可以自訂錯誤頁面,上方的ASP.NET區的.NET Error Pages與下方IIS區的Error Pages:

兩個設定介面有點不同,試著各自加上HTTP 404設定,但導向不同網頁,.NET Error Pages設定指向/NotFound/SystemWeb404.html:

Error Pages指向/NotFound/SystemWebServer404.html

設定結果會反應在web.config,.NET Error Pages設定被寫入system.web/customErrors,Error Pages則是寫到system.webServer/httpErrors

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <customErrors mode="On">
    <error statusCode="404" redirect="/NotFound/SystemWeb404.html"/>
        </customErrors>
    </system.web>
    <system.webServer>
        <urlCompression doDynamicCompression="true" />
        <httpErrors>
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" prefixLanguageFilePath="" 
              path="/NotFound/SystemWebServer404.html" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

這兩個設定有什麼不同呢?簡單來說,存取靜態檔案(如.js、.html、.css、.jpg…)發生錯誤會依照httpErrors設定辦事;由.NET處理程序接手的URL(例如:.aspx、.ashx、.svc、MVC註冊路由),出錯時則看customErrors裡的設定。

以下是簡單示範,輸入不存在的blah.gif看到的是SystemWebServer404.html、輸入不存在的blah.aspx則是SystemWeb.404.html,故得證。

補充一點:httpErrors有個errorMode屬性,預設為DetailedLocalOnly,相當於customErrors mode="RemoteOnly",故在本機測試將看不到自訂錯誤頁,要改成Custom才看得到。這是IIS 7起加入的行為,還停在IIS 6的腦袋沒意識到有差異,花了點時間才搞定,特別加記一筆。

歡迎推文分享:
Published 10 November 2015 06:57 AM 由 Jeffrey
Filed under: ,
Views: 8,783



意見

# 勇者 said on 09 November, 2015 07:19 PM

好文~

#said on 09 November, 2015 07:33 PM

難怪我之前直接改 Web.config 的時候結果這麼奇怪...

# 克雷斯 said on 12 November, 2015 09:22 PM

我最近也在為錯誤頁苦惱

有個需求是希望上傳檔案長度若超過30MB 則

Write出Json格式的錯誤

所以我想把錯誤全轉到Write出錯誤格式的aspx

可是這個需求又不能把ISS原本的上傳長度調高

結果就是每次超過30MB的長度Request都會直接

Respones 原本的錯誤頁

在Goble.aspx也擋不到 設定403.13的錯誤頁也無效

# Mark said on 16 December, 2015 03:49 AM

「故在本機測試將看不到自訂錯誤頁,要改成Cutom才看得到。」

應該是「Custom」才對吧?

# Jeffrey said on 16 December, 2015 05:35 PM

to Mark, 已修改,感謝指正。(沒有錯字就不是黑大真跡,請認明 orz)

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<November 2015>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication