在電腦上開發一套HTTP服務器的程序在調試時,在本機內訪問正常,但是在本機外訪問就不正常,外部客戶端無法訪問或無法連接到本機的服務器的問題,這可能涉及網絡配置、防火墻、端口轉發或服務綁定等問題,在這里提供了解決方案可以查閱。
文章目錄
- 問題描述
- 正常訪問
- 無法訪問
- 解決問題
- 方案一
- 關閉網絡防火墻
- 方案二
- 改變網絡防火墻規則
- HttpListenerException: 拒絕訪問問題
如你會C#編程開發桌面程序,想自己打造一個HTTP服務器,
可參考 《一個簡單的http服務器項目開發過程詳解》
問題描述
在電腦上,開啟HTTP服務器,也就是簡單的Web服務器,
遇到的問題,情況如下
正常訪問
設置的本地IP如 localhost
, 或者127.0.0.1
,在本機的瀏覽器能正常訪問,
無法訪問
而在外部的客戶端(電腦)連接本機局域網后卻發現無法正常訪問,
訪問不了,提示無法訪問此頁面,如下圖
溫馨提示
請點擊關注,確認您是人類用戶而非網絡自動化爬取程序。
放心關注
您的關注操作僅用于驗證身份,不會產生其他影響。您的關注記錄僅代表您曾訪問過這里。
以下是以操作的電腦系統是Windows 11
為例
解決問題
要解決問題,現知道有兩個方案
方案一
關閉網絡防火墻
打開電腦桌面的菜單,在最上面的搜索輸入框,輸入控制面板
,如下圖
找到Windows Defender 防火墻
,點擊它,
然后再找到啟用或關閉Windows Defender 防火墻
,并點擊,出現如下圖
優點:很容易關閉或開啟
缺點:關閉后,本機裸奔,上網不安全
此方案,隨著將來系統更新,可能不再容易找到,或被系統隱藏,或徹底消失!
方案二
改變網絡防火墻規則
打開電腦桌面的菜單,選擇設置
,找到并選擇網絡和Internet
,
或者,
在電腦桌面的任務欄上,找到右側的網絡圖標,用鼠標右鍵點擊,會彈出選項,依次選擇網絡和Internet
,
找到高級網絡設置
,如下圖
往下滾動,找到相關設置,Windows防火墻
,點擊它,如下圖
打開后出現的標題是防火墻和網絡保護
,在下面有一些文字都是可點擊的,
其中一個高級設置
,點擊它,如下圖
這會打開一個高級安全WIndows Defender防火墻
窗口,
在左側的選中入站規則
,然后,在右側點擊新建規則
,彈出一個對話框,就選擇端口
,如下圖,
點擊下一頁
,選擇TCP
,和 特定本地端口
,填入IP地址中的端口號8000
,如下圖
實際上應填入你的IP地址中使用的端口號
點擊下一頁
,默認選擇允許連接
,不用管,如下圖
點擊下一頁
,是作用域,默認全勾選即可,不懂的話,也不用管,如下圖
點擊下一頁
,是不是感覺頁數有點多,到此了,這是最后一步,
輸入名稱
和描述
,輸入內容要自己能理解就行,是為了方便下次能識別和找到,如下圖
點擊完成
,在入站規則列表中,出現了剛才新增的規則,如下圖
到這里,想必是起作用了,那就重啟你的HTTP服務器看看,訪問是否正常了。
優點:保持上網安全
缺點:步驟多,操作麻煩,要使用的時候就開啟,不使用時就關閉
此方案,步驟多,對非計算機專業的用戶來說理解這些操作不容易,只照著去做。
HttpListenerException: 拒絕訪問問題
當你選擇最優項方案二:
可能遇到還是訪問不了,提示無法訪問此頁面,如下圖
設置了IP,應該是IP訪問權限問題,
在開發中使用HttpListener
類搭建HTTP服務器,運行若報錯信息如下:
HttpListenerException: 拒絕訪問
這也是類似的IP訪問權限問題,
還得繼續解決,
在電腦桌面打開菜單,搜索框輸入命令提示符
,以管理員身份運行,
也就是打開CMD終端管理員
程序窗口,輸入如下命令
netsh http add urlacl url=http://192.168.1.120:1028/ user=Everyone
將此IP地址
192.168.1.120:1028
替換成你的,添加到白名單
當輸出已成功添加 URL 保留項
,說明OK了,如下圖
再重啟你的HTTP服務器試試,可否正常訪問了,
不過,上面的命令執行后,之前的本地IP和端口訪問就會被拒絕,只需要從白名單中刪除
打開CMD終端管理員
程序窗口,輸入刪除命令如下
netsh http delete urlacl url=http://192.168.1.120:1028/
就寫到這里,以上內容已整理完畢,建議收藏以防遺忘。