錯誤現象
ASP/ASP.NET 頁面執行 ServerXMLHTTP 或 XMLHTTP 物件發起網路請求時,拋出錯誤:
msxml3.dll 錯誤 '800c0005'
系統找不到指定的資源
根本原因
伺服器安裝防火牆 (如 Windows 防火牆、第三方安全軟體) 攔截 dllhost.exe (COM+ 代理程序) 的網路存取,導致 MSXML 元件無法發起輸出 HTTP 連線。
三種解決方案 (由易到難)
方案一:暫時關閉防火牆驗證 (僅限測試環境)
- 控制台 → Windows 防火牆 → 關閉防火牆 (所有網路位置)。
- 重新測試 ASP 頁面,若錯誤消失,確認為防火牆攔截問題。
- 警告: 生產環境嚴禁長期關閉防火牆,請改用方案二或三。
方案二:防火牆加入 dllhost.exe 信任規則 (推薦)
- 開啟防火牆進階設定 (WF.msc)。
- 新增「輸出規則」→ 程式 → 路徑:
%windir%\System32\dllhost.exe。
- 動作:允許連線 → 套用至所有設定檔 (網域/專用/公用) → 命名「MSXML dllhost 允許輸出」。
- 同理新增「輸入規則」允許 dllhost.exe 輸入 (視應用需求)。
- 重新測試,錯誤應解決。
方案三:重設 DNS 伺服器設定 (針對網路解析異常)
- 網路連線 → 區域連線 → 內容 → Internet 通訊協定 (TCP/IP) → 內容。
- 重新輸入「慣用 DNS 伺服器」與「備用 DNS 伺服器」IP (例如 8.8.8.8 / 114.114.114.114)。
- 確定離開,重新測試。
補充說明
- 錯誤代碼
0x800C0005 即 INET_E_RESOURCE_NOT_FOUND,代表 WinINet/MSXML 無法解析或連線目標資源。
- 若伺服器有多張網卡,確認 DNS 設定在正確介面卡上。
- 第三方防火牆 (如 360、安全狗、雲鎖) 需在其介面中加入
dllhost.exe 白名單,而非 Windows 原生防火牆。