【茶包射手日記】怪異的web.config HttpHandler重複錯誤
0 |
前幾天提到用HttpHandler即時壓縮JavaScript以兼顧註解隱藏及原始碼偵錯需求,今天部署到某台測試機時出現怪異錯誤:
HTTP Error 500.19 - Internal Server Error
Error Code
0x800700b7Config Error
Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'SrcScriptFilter'Config File
\\ ? \ D:\www\MyWeb\web.configConfig Source:
113: <add name="SrcScriptFilter" path="scripts/mycode/*" verb="GET" type="MyWeb.Models.AppScriptsHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
114: </handlers>Requested URL
httq://localhost:80/Myweb/home/loginPhysical Path
D:\www\MyWeb\home\login
IIS抱怨SrcScriptFilter HttpHandler在web.config重複出現,在web.config搜尋"SrcScriptFilter"關鍵字,確認沒有第二筆,更何況該web.config複製自另一台運作正常主機不應有錯。加上測試機幾週前就裝好MyWeb經過驗證,直到web.config加入AppScriptsHandler才壞掉。
感覺詭異的情境,想了想,該不會是"遞迴"吧?
開啟IIS管理員,印證了我的假設:
httq://localhost/根網站(Root Website)指向D:\www\MyWeb,底下又設了一個httq://localhost/MyWeb虛擬目錄(簡稱MyWeb子網站)也指向D:\www\MyWeb…
啊哈! 根網站與子網站指向同一資料夾,換句話說,MyWeb\web.config既是根網站的web.config,也是MyWeb子網站的web.config;由於父子網站間的web.config有繼承關係,結果就是AppScriptsHandler在根網站先加一次,到了/MyWeb子網站再加一次,就是web.config明明只有一筆,IIS卻一直嚷著重複的原因。這個目錄錯設問題存在已久,但appSettings、customErrors等設定只是被同樣的值覆寫未被察覺,直到多了Handler設定才爆開。
修正目錄設定後,問題消失,結案!
Comments
Be the first to post a comment