如何遠程斷點調試本地localhost項目

前言

對於通常開發網站的IDE自帶的服務器是都跑在 localhost 地址上的。(以下圖的asp.net)html

image

 

而這種地址是隻能在本機經過 localhost 或 127.0.0.1 地址訪問到,而沒法直接經過本機的內網IP地址訪問的。git

因此就沒法實如今虛擬機中訪問本地localhost站點,以及在虛擬機訪問時的代碼斷點,調試,以及用手機訪問本地站點等。github

雖然能夠使用IIS等web服務器發佈本地IP上,來實現外部訪問,可是依然沒法實現代碼斷點,固然能夠用附加進程調試,不是本文討論範圍。
接下來就來說解如何使用本機內網地址訪問localhost上運行的網站web

實現思路

指望目標是:在虛擬機中訪問真實機的內網IP地址來訪問真實機中運行的localhost的站點。服務器

遂,在真實機中開啓Fiddler,來充當虛擬機的代理服務器,去向真實機請求資源,同時由Fiddler修改虛擬機的請求報文,將虛擬機的Request請求報文中的真實機的IP地址改成localhost。網絡

image

設置Fiddler

要用到的軟件只有一個,Fiddler,沒有的能夠去官網下載:http://www.telerik.com/fiddler
進入Fiddler的Tools的FiddlerOptions...選項,Connections選項卡
勾選上「Allow remote computers to connect」選項,容許其餘計算機鏈接asp.net

image


若是你的端口沒有被佔用的話默認應該是 8888 端口函數

設定虛擬機的代理服務器

以後進入虛擬機,設置系統代理爲當前真實機的IP的8888端口,推薦使用我以前文章中寫的「自動設置代理服務器批處理
設置完成後去查看設置狀況, 10.0.1.11 是個人真實機的內網地址,端口8888。
 image工具

 

設置完成後從虛擬機訪問 真實機的IP+8888 端口,若是能顯示出FiddlerEchoService就說明代理沒問題。網站

image


此時在虛擬機中訪問百度已經能夠被fiddler抓到了。
關於如何鑑別流量是本機的仍是從遠程訪問的很容易,看Fiddler的Process列便可:

注意:本機流量能夠追查到流量進程名及PID,而遠程流量是沒法顯示進程的。

image

上圖第一條就是由火狐發出的請求,而下面的流量都是從虛擬機發出的請求,沒有進程名。

設置Fiddler自動化修改數據報文

如今從虛擬機已經能夠經過個人真實機作代理向外訪問了,因此接下來須要從代理服務器Fiddler中修改數據包便可。
須要一款FiddlerScript Editor的軟件,能夠從官網下載:http://www.telerik.com/download/fiddler/fiddlerscript-editor
關於FiddlerScript   的使用和介紹在以前的一篇文章中已經提到一些。

選擇跳轉至 OnBeforeRequest 函數。

經過右側的API文檔得知,oSession對象的屬性hostname表示不包含端口號的HTTPHeader的host字段值。

image


在此函數最後寫上以下代碼,目的是要在數據發來請求後修改數據報文,將指向本機的URL修改localhost地址。

image

保存後回到虛擬機。訪問10.0.1.11的localhost服務9527端口,能夠發現,全部數據包都被修改成localhost地址
同時,我真實機上跑的localhost的服務也能夠被內網其餘計算機訪問了。

image

 

手機端訪問

前提是手機鏈接的wifi必需要和真實機在同一網段。
如圖,雖然鏈接了同一網段的wifi下,但不設置也是沒法訪問的。

image

進入手機wifi設置,高級設置,代理設置,修改成「手動」
IP地址爲個人真實機IP,10.0.1.11,
端口爲Fiddler的監聽端口:8888

image

 

設置了代理服務器後,就能夠順利經過IP地址訪問localhost的服務了,固然也能夠同步加斷點,調試等。

image

注意事項

1,注意在使用過程當中Fiddler不能關閉,關閉了就沒有代理服務器了。
2,注意在使用完成後,把代理服務器設置刪除,不然虛擬機/手機就沒法正常上網了。

相關連接

工具下載(GitHub):

一、自動設置本機系統代理服務器.bat

二、刪除本機代理服務器設置.bat

其餘文章:

一、利用Fiddler斷點功能,模擬網絡問題

二、[批處理]自動設置本機系統代理服務器

相關文章
相關標籤/搜索