部署 ASP.NET 網站至安裝「安全狗」的伺服器時,可能遇到啟動即拋出 System.ArgumentException: 項目已經存在。字典中的關鍵字: “RegistryPermission” 錯誤。本文記錄真實排查過程與解決方案。
[ArgumentException: 已添加項。字典中的關鍵字:“RegistryPermission”所添加的關鍵字:“RegistryPermission”]
System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) +7482408
System.Security.Policy.PolicyLevel.FromXml(SecurityElement e) +307
System.Web.HttpRuntime.CreatePolicyLevel(String configFile, String appDir, String binDir, String strOriginUrl, Boolean& foundGacToken) +420
System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags) +186
bin 目錄、web.config 權限設定均正常RegistryPermission在安全狗管理主控台 → .NET 防護設定 → 將「權限控制模式」從「嚴格/自訂」改為 「完整模式」 (或「系統預設級別」),即不限制 .NET 程式碼存取權限:

HttpRuntime.HostingInit 建立程式碼存取安全策略 (PolicyLevel)PolicyLevel.FromXml 解析時重複插入相同權限類別web.config 設定 `此案例提醒:生產環境安裝主機防護軟體時,務必驗證 .NET 應用程式相容性,並保留回滾方案。