2016-12-11

讓 IIS EXPRESS 的網站允許外部連接(allow remote access)

讓 IIS EXPRESS 的網站可以被對本機以外提供服務
前端、行動裝置再加上愈來愈多的 IOT 相關應用出現,後端工程師最大的功能大概就是提供 API 了吧(^^||) 透過將開發用的 IIS EXPRESS 直接用來驗證結果是否合乎預期,就能減少頻繁地部署程式到實體 IIS 上的時間跟動作,又可以查更多bug(大誤) 利用這樣的方式讓在同網段的其他裝置可以直接連進來,甚至還可以直接 attach IIS EXPRESS 進行 debug,聽起來是不是很誘人?! btw:這適合開發人員自行測試 debug 用,如果要跟其他裝置整合還是應該透過 IIS 部署

1. 設定 HTTP.sys(Hypertext Transfer Protocol Stack )

  • IIS 6 時開始用來取代 Windows Sockets API
  • HTTP.SYS 是 IIS 的核心元件,用來處理 Http request
  • 在 IIS 建立新應用程式集區(application pool)時,會自動在 http.sys 註冊集區以用來識別.

1-1. 以管理者身份開啟命令提示字元(command line)

cmd

1-2. 取得本機內網 ip

ipconfig
ip

1-3. 取得 IIS EXPRESS 站台 PORT

  • 方法1:專案設定
port2
  • 方法2:IIS EXPRESS 快顯視窗中
port1

1-4. 使用 netsh本機 IP站台 port 加入 URL 保留區(access control list)

netsh http add urlacl url=http://192.168.31.102:10777/ user=everyone
added

1-5. 檢查設定(optional)

netsh http show urlacl

刪除設定(if need)

如果已經測試完畢,才需要進行刪除
netsh http delete urlacl url=http://192.168.31.102:10777/

2. 修改 IIS EXPRESS 設定

2-1. IISEXPRESS 8.X (VS 2013) 以前

%USERPROFILE%\Documents\iisexpress\config\applicationhost.config

2-2. IIS Express 10(VS 2015)

改放在專案下的 .vs\ocnfig 資料夾中
%USERPROFILE%\Documents\Visual Studio 2015\Projects\TestExceptional\.vs\config\applicationhost.config

2-3. 加上 binding

用 port 搜尋,複製現有的,把 `localhost` 改為 `本機內網 IP`
binding

3. 開放防火牆的特定連接埠(port)

3-1.開始 搜尋 wf.msc

wf.msc

3-2. 新增 inbound 規則

newrule

3-3. 建立 port 規則

PORT

3-4. 使用 TCP特定 port

TCP

3-5. 選擇 allow the connect

ALLOW

3.6. 預設即可

WHEN

3-7. 建立規則名稱

NAME

4. 效果

  • 修改前(無法存取 IIS EXPRESS 站台)
cannotaccess
  • 修改後(可以存取 IIS EXPRESS 站台)
access

參考資料

  1. MSDN http https
  2. MSDN-IIS EXPRESS
  3. Nestsh commands for HTTP
  4. VS2015的IISEXPRESS 10的APPLICATIONHOST.CONFIG置叨位
  5. Access IIS Express from another machine

沒有留言:

張貼留言