2017-07-19 81 views
0

我試過下面解釋的東西,不知何故,在本地和服務器端IP地址總是:: 1,C#IP地址總是:: 1

這裏是代碼,我試過了;

m_CallerIP = string.IsNullOrEmpty(req.ServerVariables["HTTP_CLIENT_IP"]) ? req.UserHostAddress : req.ServerVariables["HTTP_CLIENT_IP"]; 
string Port = string.IsNullOrEmpty(req.ServerVariables["HTTP_CLIENTPORT"]) ? req["HTTP_CLIENTPORT"] : req.ServerVariables["CLIENTPORT"]; 

string asd2 = String.IsNullOrEmpty(req.ServerVariables["REMOTE_ADDR"]) ? req.UserHostAddress : req.ServerVariables["REMOTE_ADDR"]; 
string asd23 = String.IsNullOrEmpty(req.ServerVariables["HTTP_X_FORWARDED_FOR"]) ? req.UserHostAddress : req.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

string asd4 = req.UserHostAddress; 

IPAddress address = IPAddress.Parse(m_CallerIP); 
IPAddress address1 = IPAddress.Parse(asd2); 
IPAddress address2 = IPAddress.Parse(asd23); 
IPAddress address3 = IPAddress.Parse(asd4); 

有沒有人知道爲什麼以及如何解決它?

在此先感謝!

+0

我試過了,仍然是:: 1 – NewPHPer

+0

您是否從不同的機器訪問服務器? –

+0

@ChristophK是的,我已經試過這個。 – NewPHPer

回答

0

下面的代碼適用於我。

當我在本地主機上運行的應用程序,我總是得到:: 1。但是,它在服務器端運行。該應用正在Azure中運行。

string ip = ""; 

ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

if (!string.IsNullOrEmpty(ip)) 
    ip = ip.Split(',').Last().Trim(); 
else 
    ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 

if (ip == "::1") 
    ip = ""; 

if (ip.IndexOf(':') > 0) 
    ip = ip.Substring(0, ip.IndexOf(':')); 

return ip;