netstat -an 未見 80 監聽,任務管理器無異常進程,事件日誌乾淨。IIS 完整版 + IIS Express 共存 = 衝突。雙同屬微軟 IIS 家族,共用核心組件(WAS、W3SVC)、註冊表鍵值、預設網站綁定。Express 版雖為輕量開發版,但安裝時會註冊 URL ACL、佔用 80 端口預留、修改 applicationHost.config,導致完整版 IIS 啟動失敗、工作進程無法啟動、網站無法服務——卻不顯式佔用 80 端口、不寫錯誤日誌、不顯示進程,極具迷惑性。
iisreset、瀏覽器訪問站點、netstat -ano | findstr :80 確認 `w3wp.exe` 正常監聽。| 誤區 | 正確認知 |
|---|---|
| 以為只有顯式佔用 80 才算衝突 | URL ACL、命名管道、註冊表、WAS 共享記憶體皆可造成隱性衝突 |
| Express 只是開發工具,不影響生產 IIS | Express 安裝會修改機器級配置,直接影響完整版 IIS 運行 |
| 重啟 IIS 服務即可恢復 | 必須重啟 OS,才能清理核心物件與 ACL |
# 查看 URL ACL 預留 netsh http show urlacl # 查看 HTTP.SYS 監聽狀態 netsh http show servicestate # 查看進程載入模組(需 Sysinternals) listdlls -d w3wp.exe
「端口未佔用但服務不工作」是HTTP.SYS 層面衝突的典型特徵。生產環境嚴禁安裝 IIS Express、Visual Studio、SQL Express 等開發組件。若必須共存,請用容器(Docker/Hyper-V)隔離。排查口訣:日誌無錯 → 端口無佔 → 進程無異 → 查共存組件 → 重啟 OS。