在用C#開發Web應用時有個痛點,就是本機用VS開啟Web應用調試時外部機器無法訪問此Web應用。這裡將會介紹如何通過設定允許區域網路和外網機器訪問原生Web應用。
目錄
1. 設定內網訪問
2. 設定外網訪問
1. 設定內網訪問
在設定之前,本機環境如下:
作業系統:win7
IDE:Visual Studio 2010
應用:asp.net
想要實現區域網路內其他機器訪問本機web應用程式套件含以下4步:
第一步:設定啟動方式為IIS Express
Visual Studio 運行Web應用時,預設採用自身的Visual Studio程式開發伺服器。所以先要把項目改為用 IIS Web伺服器。
首先確保機器已經裝了IIS Express,下載地址(10.0版本):www.microsoft.com/zh-CN/download/details.aspx?id=48264
步驟:右鍵Web項目 → 屬性 → Web選項卡 → 勾選使用本地IIS Web 服務器 → 設定連接埠並點擊【建立虛擬目錄】按鈕
第二步:設定IIS Express的applicationhost.config檔案
點擊上面操作的【建立虛擬目錄】按鈕後,會在IIS Express的applicationhost.config檔案建立虛擬目錄資訊。
檔案預設路徑:%userprofile%\My Documents\IISExpress\config\applicationhost.config
找到上面應用程式的配置資訊,添加一條:
<binding protocol="http" bindingInformation="*:8081:*" />
樣本圖:
注意:修改前若已啟動了IIS Express,修改後需要重新啟動IIS Express才生效。
第三步:設定windows 防火牆
完成上面2步後,還需要設定防火牆允許此連接埠通過。
1) 圖形操作:
開啟 Windows 防火牆的進階設定:
① 控制台 → Windows 防火牆 → 進階設定
② 建立一條入站規則:協議TCP、連接埠為8081。
樣本圖:
2) 命令列
也可以執行以下命令添加一條入站規則:
netsh advfirew all firewall Add rule name=\"命令列Web訪問8081\" dir =in protocol=tcp localport=8081 action =allow
結果:
第四步:配置URL保留項
在Windows 7,可使用 Netsh.exe 工具配置HTTP設定,允許指定URL通過。
以管理員身份運行cmd命令:
netsh http add urlacl url=http://*:8081/ user=everyone
該命令為所有帳戶的指定 URL 命名空間添加一個 URL 保留項
更多netsh資料,可訪問相關MSDN:配置 HTTP 和 HTTPS
運行圖
2. 設定外網訪問
設定好內網可訪問後,想要外網的小夥伴訪問本機,可通過以下2種方法:
1) 連接埠映射
2) 內網穿透
2.1 連接埠映射
前提條件:擁有路由器設定許可權。
在對外的路由器中設定一條連接埠映射規則,訪問外部IP地址時跳轉到區域網路機器上。具體操作這裡不闡述。
2.2 內網穿透
在公司內開發web應用時,不是所有人都可以申請連接埠映射的許可權,所以這時候就要有個內網穿透的解決方案了。
網路上提供內網穿透的應用有很多,這裡使用的是花生殼(官網:hsk.oray.com/)。
樣本:
注意:OAuth2.0進行網域名稱跳轉時會加上連接埠號碼,此時網域名稱連接埠為80,本機連接埠為8081,跳轉後的地址為網域名稱:8081會顯示錯誤。解決方案只需要設定本機web應用的連接埠也為80即可。
運行圖