我想获得ClientIPaddress但是当我致电Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
时,我总是得到NULL
。
检查Servervariables
的列表后,我注意到HTTP_X_FORWARDED_FOR
不在选项列表中。
任何人都知道这是如何可行的以及如何解决?或者这个选项不在列表中并且我遗漏了一些东西是正常的。
提前致谢
答案 0 :(得分:8)
Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
将只有一个值。通常,您将使用Request.ServerVariables["REMOTE_ADDR"]
获取客户端IP。
答案 1 :(得分:3)
请试试这个:
public static string GetUserIP() {
var ip = ( HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null
&& HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "" )
? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
: HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (ip.Contains( "," ))
ip = ip.Split( ',' ).First();
return ip.Trim();
}
在此处找到:
http://mycodepad.wordpress.com/2013/04/26/c-getting-a-user-ip-behind-a-proxy-http_x_forwarded_for/
答案 2 :(得分:3)
public string GetIPAddress()
{
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"];
}
此方法可能对您有用。
答案 3 :(得分:1)
如果您在本地计算机上运行它,看不到任何事情是正常的,否则您在真正的外部主机上运行它。