正在加载中...

关闭
请选择需要拨打的号码
关闭
请根据问题类型选择QQ咨询

windows2008+iis7的httperrors与customErrors的区别与应用

windows2008+iis7的httperrors与customErrors的区别与应用

windows服务器配置常常需要错误调试,在IIS中有两个参数,customErrorshttpErrorsWindows 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的脑袋没意识到有差异。



返回上一页