經典問題:IIS 發布 WebService 後,https://localhost/Service.asmx 正常,換成本機 IP https://192.168.x.x/Service.asmx 卻提示「無法訪問此網站」。本文從綁定、防火牆、應用程式池、瀏覽器代理四個維度給出完整排查清單。
localhost 或主機名。打開 IIS 管理器 → 站點 → 右鍵「編輯繫結」 → 新增:


# PowerShell 管理員執行
New-NetFirewallRule -DisplayName "IIS HTTP In" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "IIS HTTPS In" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow
或圖形介面:控制台 → Windows Defender 防火牆 → 進階設定 → 入站規則 → 新增規則 → 埠 → TCP 80,443 → 允許連線。
IIS_IUSRS → 讀取/執行、列出資料夾內容、讀取。IE/Edge:Internet 選項 → 連線 → 區域網路設定 → 勾選「繞過本地位址的 Proxy 伺服器」。
Chrome:預設繞過,但若配置了 SwitchyOmega 等擴展,需加入 <local> 或具體 IP 至繞過清單。
| 現象 | 可能原因 | 驗證命令 |
|---|---|---|
| IP 訪問 404 | 綁定主機名不匹配 | curl -v https://IP/Service.asmx |
| IP 訪問 503 | 應用程式池未啟動/崩潰 | IIS 管理器查看狀態、事件檢視器 |
| 局域網其他機器不通 | 防火牆/路由/殺毒軟件攔截 | telnet IP 80、netstat -an | findstr :80 |
| HTTPS 證書錯誤 | 自簽證書不受信 | 匯入受信任根憑證機構、或用有效證書 |
@echo off
echo ===== IIS 站點綁定 =====
appcmd list site
echo ===== 80 埠監聽 =====
netstat -an | findstr :80
echo ===== 防火牆規則 =====
netsh advfirewall firewall show rule name=all | findstr "80 443"
echo ===== 應用程式池狀態 =====
appcmd list apppool /state:Started
pause
照著清單逐項核對,90% 的「localhost 通 IP 不通」問題可在 10 分鐘內解決。記住:綁定所有未指派 IP + 開放防火牆埠 + 正確應用程式池身份 是鐵三角。