【茶包射手日記】怪異的web.config HttpHandler重複錯誤

前幾天提到用HttpHandler即時壓縮JavaScript以兼顧註解隱藏及原始碼偵錯需求,今天部署到某台測試機時出現怪異錯誤:

HTTP Error 500.19 - Internal Server Error

Error Code
   0x800700b7

Config Error
   Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'SrcScriptFilter' 

Config File
   \\ ? \ D:\www\MyWeb\web.config

Config 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/login

Physical 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設定才爆開。

修正目錄設定後,問題消失,結案!

歡迎推文分享:
Published 22 April 2014 10:08 PM 由 Jeffrey
Views: 6,089



意見

沒有意見

你的看法呢?

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

5 + 3 =

搜尋

Go

<April 2014>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

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

文章典藏
其他功能

這個部落格


Syndication