我想得到 ClientIPaddress 但是当我打电话时Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
我总是得到NULL
.
检查列表后,Servervariables
我注意到它HTTP_X_FORWARDED_FOR
不在选项列表中。
任何人都知道这怎么可能以及如何解决?或者这个选项不在列表中并且我遗漏了一些东西是正常的。
提前致谢
Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
如果请求是由代理转发的,则只有一个值。通常你会使用Request.ServerVariables["REMOTE_ADDR"]
.
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"];
}
这个方法可能对你有用。
请试试这个:
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/
如果你在本地机器上运行它,看不到任何东西是正常的,否则你在一个真正的外部主机上运行它。