讓 IIS Express 允許外部連接(區網內手機或其他電腦等)
有時後開發中需要測試不同環境或裝置開啟網站的差異,而為了方便偵錯,可以讓 IIS Express 啟動的網站允許外部連線進來。
一、系統環境
- Windows Server 2012
- Visual Studio 2012
二、取得本機端 IP
以 ipconfig
取得本機端的 IP(例如 192.168.40.1)
三、以系統管理員身分開啟 Visual Studio
一定要用系統管理員身分執行 Visual Studio,因為更改成非 localhost 的繫結設定後需要系統管理員權限才能執行 IIS Express。
如果沒有用系統管理員執行,可能會跳出以下訊息:
四、設定 applicationhost.config
開始偵錯,IIS Express 執行後,取得網站名稱,並找到組態檔 applicationhost.config。
(VS 2012 在「我的文件」中:「%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config」;VS 2019 在「⽅案資料夾.vs\專案名稱\config\applicationhost.config」。)
開啟檔案後,依照網站名稱找到對應的設定,修改原本的繫結設定,將 localhost 改成本機的 IP(例如 bindingInformation="*:62754:localhost"
改為 bindingInformation="*:62754:192.168.40.1"
),然後存檔。
<site name="TestSite(1)" id="3">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\TestSite\TestSite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:62754:192.168.40.1" />
<binding protocol="https" bindingInformation="*:44372:192.168.40.1" />
</bindings>
</site>
五、設定輸入規則
控制台→Windows 防火牆→進階設定→輸入規則→新增規則→選擇連接埠→設定要開放的
port(以上面例子來說就是 62754 和 44372)→完成設定
六、重新啟動網站
關閉 IIS Express,結束偵錯(但不要關閉 VS),然後再重新進入偵錯,啟動網站。
七、手機端測試連線
手機使⽤對應的 URL,例如 http://192.168.40.1:62754
,即可瀏覽。
個人偏好,在測試完成後,會將 applicationhost.config 繫結改回來 localhost,不然重開專案後,繫結可能重設,網站名稱和編號會⼀直增加 (例如 TestSite → TestSite(1) → TestSite(2) → …)
備註:狀況排解
以下是我設定時曾經遇到的狀況和解決方法:
狀況一、The site can’t be reached.(無法連上這個網站) → 檢查輸入規則是否設定成功。
狀況二、Bad Request – Invalid Hostname → 檢查 applicationhost.config 的繫結設定