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

讓 IIS EXPRESS 的網站可以被對本機以外提供服務

前端、行動裝置再加上愈來愈多的 IOT 相關應用出現,後端工程師最大的功能大概就是提供 API 了吧(^^||) 透過將開發用的 IIS EXPRESS 直接用來驗證結果是否合乎預期,就能減少頻繁地部署程式到實體 IIS 上的時間跟動作,又可以查更多bug(大誤)

利用這樣的方式讓在同網段的其他裝置可以直接連進來,甚至還可以直接 attach IIS EXPRESS 進行 debug,聽起來是不是很誘人?!

btw:這適合開發人員自行測試 debug 用,如果要跟其他裝置整合還是應該透過 IIS 部署

設定 HTTP.sys (Hypertext Transfer Protocol Stack )

Note: 關於 HTTP.sys

  • IIS 6 時開始用來取代 Windows Sockets API
  • HTTP.SYS 是 IIS 的核心元件,用來處理 Http request
  • 在 IIS 建立新應用程式集區(application pool)時,會自動在 http.sys 註冊集區以用來識別.
  1. 以管理者身份開啟命令提示字元(command line)

    cmd

  2. 取得本機內網 ip

    • ipconfig

      ip

  3. 取得 IIS EXPRESS 站台 PORT

    • 方法1:專案設定

      port2

    • 方法2:IIS EXPRESS 快顯視窗中

      port1

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

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

    added

  5. 檢查設定(optional)

    netsh http show urlacl
    
  • 刪除設定(if need)

    如果已經測試完畢,才需要進行刪除

    netsh http delete urlacl url=http://192.168.31.102:10777/
    

修改 IIS EXPRESS 設定

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

    %USERPROFILE%\Documents\iisexpress\config\applicationhost.config
    
  2. IIS Express 10(VS 2015)

    改放在專案下的 .vs\config 資料夾中

    %USERPROFILE%\Documents\Visual Studio 2015\Projects\TestExceptional\.vs\config\applicationhost.config
    
  3. 加上 binding

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

    <binding protocol="http" bindingInformation="*:10777:192.168.31.102" />
    

    binding

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

  1. 開始 搜尋 wf.msc wf.msc

  2. 新增 inbound 規則

    newrule

  3. 建立 port 規則

    PORT

  4. 使用 TCP特定 port

    TCP

  5. 選擇 allow the connect

    ALLOW

  6. 預設即可

    WHEN

  7. 建立規則名稱

    NAME

效果

  • 修改前(無法存取 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