急急!.NET無法獲取到服務器端IP,請高手指教!
網上可以搜索到的方法,我都試過,最後獲取的IP卻是代理服務器的ip,而不是發起訪問機器的IP,是不是因為多級代理造成此種問題呢?因為我的電腦(A)是通過另一台電腦(B)代理上網。而那一台電腦(B)則是通過另一台服務器(C)代理。
上述幾種方式從我的電腦(A)發起訪問后,程序獲取的IP都是C的IP,我想要的是A的ip請問該怎麼辦?另外,在B電腦發起訪問的時候,上述代碼是可以獲取到B的IP的。請高手指教!謝謝!
不知道我把問題描述清楚了沒有,有什麽不明白的地方也可以提出來。下面是我使用過的幾種方式。
方法1:
private string getIp1()
{
if (Request.ServerVariables["HTTP_VIA"] != null)
return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
else
return Request.ServerVariables["REMOTE_ADDR"].ToString();
}
方法2:
public string getIp2()
{
string ip;
try
{
HttpRequest request = HttpContext.Current.Request;
if (request.ServerVariables["HTTP_VIA"] != null)
{
ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
}
else
{
ip = request.UserHostAddress;
}
}
catch (Exception e)
{
throw e;
}
return ip;
}
方法3:
public string getIp3()
{
//可以透过代理服务器
string userIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
//如果没有代理服务器,有代理服务器获取的是代理服务器IP
if (userIP == null || userIP == "")
{ userIP=HttpContext.Current.Request.UserHostAddress;
if (userIP == null || userIP == "")
{
userIP = Request.ServerVariables["REMOTE_ADDR"];
}
}
return userIP;
}