2017-08-05 108 views
0

我已經在IIS上實際部署了我的asp網站,並且一切正常。我已經閱讀了如何繞過代理服務器,但我仍然不確定如何去做。我想繞過網絡上的代理服務器的原因是能夠讀取客戶端的IP地址(代理服務器後面的IP地址)。坦率地說,我對這個主題沒有太多的知識..繞過代理服務器,IIS上的ASP網站

我從MSDN讀取到,您可以將代碼行添加到Web.Config文件中以繞過代理服務器。但我不知道該輸入什麼或者如何使用這個defaultproxy標籤。

Link

現在我只檢索或者127.0.0.1是本地主機或設備的網絡的外部IP地址,這是不是我想要的..

任何人都可以點我在正確的方向獲取代理後面的IP地址?請欣賞任何幫助。謝謝。

代碼我一直在嘗試獲得客戶端的IP地址:

protected void getIP_Click(object sender, EventArgs e) 
{ 
    String hostName = System.Net.Dns.GetHostName(); 
    String clientIpAddressHostName = System.Net.Dns.GetHostAddresses(hostName).GetValue(0).ToString(); 
    IP1.Text = clientIpAddressHostName; 

    String clientIpAddress = HttpContext.Current.Request.ServerVariables["REMOTE_HOST"].ToString(); 
    IP2.Text = clientIpAddress; 

    String ip = null; 

    if (String.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"])) 
    { 
     ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
    } 

    IP3.Text = ip; 

    String ipNext = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); 
    IP4.Text = ipNext; 

    //String ipNextNext = HttpContext.Current.Request.UserHostAddress; 
    String ipNextNext = HttpContext.Current.Request.ServerVariables["LOCAL_ADDR"].ToString(); 
    IP5.Text = ipNextNext; 

    String last = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.GetValue(0).ToString(); 
    IP6.Text = last; 

    Label2.Text = getIPAdd(); 

    try 
    { 
     String externalIP; 
     externalIP = (new WebClient()).DownloadString("http://checkip.dyndns.org/"); 
     externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")).Matches(externalIP)[0].ToString(); 
     Label1.Text = externalIP; 
    } 
    catch (Exception ex) 
    { 
     logManager log = new logManager(); 
     log.addLog("IP Add", "IP Add", ex); 
    } 
} 

private String getIPAdd() 
{ 
    System.Web.HttpContext context = System.Web.HttpContext.Current; 
    string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

    if (!string.IsNullOrEmpty(ipAddress)) 
    { 
     string[] addresses = ipAddress.Split(','); 
     if (addresses.Length != 0) 
     { 
      return addresses[0]; 
     } 
    } 

    return context.Request.ServerVariables["REMOTE_ADDR"]; 
} 

結果,

Results

所需的詳細信息:

details

+0

據我可以理解你在談論nginx的那種有些反向代理。然後,查看真實客戶端IP的唯一方法是將代理服務器配置爲通過HTTP標頭將其轉發到您的應用程序。你知道你使用的代理服務器的名稱嗎? – vorou

+0

你好,再次vorou,是的,我在一個星期前的某處看到這個nginx單詞..我如何檢查?我實際上有我最後的網站演示,我要做的是在IIS上發佈網站,然後運行它,然後回到我的問題獲取客戶端的內部IP地址在同一網絡上。我的一位同事告訴我,僅僅繞過代理服務器就會得到我想要的東西。 – domster

+0

如果您的IIS與您訪問的機器在同一網絡上,應該可以直接訪問它(並參見您的應用程序中的實際IP)。只要確保你通過安裝了IIS的計算機的IP訪問它(如果你不確定你可以終端進入並運行'ipconfig';查找以IPv4地址開頭的行)。另外,您能否顯示您用來獲取客戶端IP的代碼? – vorou

回答

1

我只是用這個t Ø獲取客戶端IP地址:

HttpContext.Current.Request.UserHostAddress 

,我可以看到你有一個在你的代碼也一樣,但它的註釋。 它的工作對我來說:

enter image description here

+0

嘿vorou對不起,我試圖解決其他問題。我仍然得到:: 1是localhost ..我檢查我的ipconfig在cmd它應該是192.168.1.118,但我沒有得到.. – domster

+0

什麼是您的應用程序部署在機器的IP地址? – vorou

+0

目前即時通訊使用iis express來運行我的網站,因爲我還沒有在本地iis上部署它..即使它是通過iis express,我也應該能夠獲得192.168.1.118? – domster

相關問題