c#中serverdariables缺少HTTP_X_FORWARDED_FOR

我想得到ClientIPaddress但是当我调用Request.ServerVariables["HTTP_X_FORWARDED_FOR"]我总是得到NULL

检查Servervariables列表后,我注意到HTTP_X_FORWARDED_FOR不在选项列表中。

任何人都知道这是如何可能的以及如何解决? 或者这个选项不在列表中并且我遗漏了一些东西是正常的。

提前致谢

如果请求是由代理转发的, Request.ServerVariables["HTTP_X_FORWARDED_FOR"]将只有一个值。 通常,您将使用Request.ServerVariables["REMOTE_ADDR"]获取客户端IP。

请试试这个:

 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/

 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"]; } 

这个方法对你有用。

如果你在本地机器上运行它,看不到任何东西是正常的,否则你在真正的外部主机上运行它。

.net HTTP_X_FORWARDED_FOR在localhost上为NULL