2016-03-08 88 views
2

運行ColdFusion 11(更新7)處理設置的自定義錯誤和IIS 7.5IIS 7.5 =嵌套的web.config將不會覆蓋在應用程序級別的web.config

我的網站應用/根級別的web.config:

<configuration> 
    <system.webServer> 
     <httpErrors errorMode="Custom" /> 
    </system.webServer> 
</configuration> 

我嵌套的web.config文件,其中坐鎮內線/ API/EB:

<configuration> 
    <system.webServer> 
     <httpErrors errorMode="Detailed" /> 
    </system.webServer> 
</configuration> 

當我訪問網頁/ API/EB子目錄中,坐在(如401.cfm)和觸發一個401狀態代碼服務器將r修改自定義錯誤處理程序響應。我從文檔的解釋是,嵌套的web.config文件應該覆蓋根web.config文件,但它顯然不是。

我已經檢查了IIS應用程序主機文件,httpErrors overrideModeDefault設置爲true。我也嘗試在我的根web.config文件中使用位置標記來做同樣的事情,但它也被忽略,除非我將路徑設置爲通配符。

我出來的想法。對你的幫助表示感謝。先謝謝你。

回答

0

我發現這篇文章,這似乎解釋你的問題非常好 - How to Use HTTP Detailed Errors in IIS 7.0

具體來說此摘錄:

安全考慮

注意的一點是:對於建築的原因,IIS只有在位於同一應用程序池中的情況下才能執行該URL。使用重定向功能在不同的應用程序池中執行自定義錯誤。

當發生特定錯誤時,IIS也可以返回302重定向到瀏覽器。如果你有一個服務器場,重定向是很好的。例如,您可以將所有錯誤重定向到您密切監視的中央位置。

但有風險:responseMode="File"(這是默認值)允許您指定磁盤上的每個文件。如果你非常關注安全性,這將不起作用。

可行的方案可能只包括允許errorMode設置的委派。這使得開發人員即使在使用遠程客戶端時也可以接收其應用程序的詳細錯誤。所有必要的是設置errorMode="Detailed"。下面是如何配置這樣的情景:

允許httpErrors部分代表團:

<section name="httpErrors" overrideModeDefault="Allow" />

其次,轉到applicationHost部分。配置和更改,這樣只有errorMode委託:

<httpErrors lockAllAttributesExcept="errorMode" lockElements="error">
<error statusCode="404" prefixLanguageFilePath="E:\inetpub\custerr" path="404.htm" /> <error statusCode="401" prefixLanguageFilePath="E:\inetpub\custerr" path="401.htm" /> <error statusCode="403" prefixLanguageFilePath="E:\inetpub\custerr" path="403.htm" /> <error statusCode="405" prefixLanguageFilePath="E:\inetpub\custerr" path="405.htm" /> <error statusCode="406" prefixLanguageFilePath="E:\inetpub\custerr" path="406.htm" /> <error statusCode="412" prefixLanguageFilePath="E:\inetpub\custerr" path="412.htm" /> <error statusCode="500" prefixLanguageFilePath="E:\inetpub\custerr" path="500.htm" /> <error statusCode="501" prefixLanguageFilePath="E:\inetpub\custerr" path="501.htm" /> <error statusCode="502" prefixLanguageFilePath="E:\inetpub\custerr" path="502.htm" />

</httpErrors>

請注意,overrideModeDefault屬性的正確值是Allow,而不是您在問題中提到的true

本文進一步解釋了overrideModeDefault屬性 - Understanding IIS 7.0 Configuration Delegation

摘錄:

的overrideModeDefault屬性是一個可選的屬性,它定義一個區段的鎖定狀態。其可用值是「允許」或「拒絕」。默認值是「允許」。與服務器的任何性能,安全性或關鍵方面相關的所有IIS部分都被鎖定,該屬性被設置爲「拒絕」。如果overrideModeDefault屬性設置爲「Deny」,那麼爲較低級別(即web.config文件)設置特定配置節的屬性值的任何配置文件都無法生效並覆蓋全局值。這會導致違反鎖併發生錯誤。

+0

在雙重檢查我可以看到,我確實設置了overrideModeDefault以允許 – BallisticPugh

相關問題