如下代码: /**//// <summary> /// RealIP 的摘要说明: /// 获得用户的真实ip,由于squidserver的原因直接取到的ip是内网ip /// </summary> abstract public class RealIP { const string HEADER_KEY_IP = "X-Forwarded-For"; /**//// <summary> /// 真实ip /// </summary> public static string Value { get { System.Web.HttpRequest request = System.Web.HttpContext.Current.Request; string ip = string.Empty; string ipHeader = request.Headers[HEADER_KEY_IP]; if(!string.IsNullOrEmpty(ipHeader)) { string[] IPs = ipHeader.Split(','); foreach (string ipItem in IPs) { if ((!string.IsNullOrEmpty(ipItem)) && (!IsLocalIP(ipItem))) { ip = ipItem; break; } } } if(ip == string.Empty)ip = request.UserHostAddress; return ip; } } static bool IsLocalIP(string ip) { return ip.StartsWith("192.168.") || ip.StartsWith("172.16.") || ip.StartsWith("10."); } } 其原理就是局域网内的服务器,向真实real server转发请求时,将客户端用户的真实ip放到了Http头信息中。