今天Boss说,项目中的报错邮件发回的客户端IP地址不对,居然是自己服务器端的IP地址...我那个汗了一把...百度了一堆,最会也木有找到更好的方法,希望园子里的大牛们给小弟指点指点...
下面是正在使用的获取IP地址的方法. 正如你看到的,有时候仍旧取不到真的准确的IP地址,我想要个能百分之百取得IP地址的方法,只能跪求了....
////// 获取ip /// /// 当前页 ///IP public static string GetUserIP() { HttpContext context = HttpContext.Current; string clientip = ""; //可以透过代理服务器取得客户端真实的IP,但是并不是每个代理服务器都能用这个方法取得真实IP //如果客户端没有使用代理服务器,这个值就为null,所以必须判断 if (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) { clientip = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Trim(); if (clientip.IndexOf(",") > -1) { string[] tempIp = clientip.Split(','); foreach (string s in tempIp) { //192.168.1.1属于IP地址的C类地址,属于保留IP,专门用于路由器设置. if (!s.StartsWith("192.168")) { clientip = s.Trim(); break; } } } } else { //取得客户端的IP地址,如果客户端使用代理服务器,那么取得的就是代理服务器的IP,而不是真实的IP地址 clientip = context.Request.ServerVariables["REMOTE_ADDR"]; } try { IPAddress.Parse(clientip); } catch { clientip = "127.127.0.1"; } return clientip; }