公司是用局域网的,我用Request.UserHostAddress获取某个部门的IP,该部门的IP固定在10.128.230.0~10.128.230.20.能获取这个部门其他同事的Ip都在这个范围,但只有一个同事的IP获取的一直是172.28.129.28.请问是不是该同事的电脑设置有问题,要怎样设置他的电脑。期间有让她把防火墙关闭掉都不能获取正确的IP

解决方案 »

  1.   

    #region 透过代理获取用户IP地址
                /// <summary>
                /// 透过代理获取用户IP地址
                /// </summary>
                /// <returns></returns>
                public static string GetUserIP()
                {
                    string User_IP;
                    if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                    {
                        User_IP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
                    }
                    else
                    {
                        User_IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
                    }
                    return User_IP;
                }
            #endregion
      

  2.   

    没有遇到过这个问题.我一直用这个.你可以试试
            /// <summary>
            /// 获取IP
            /// </summary>
            /// <param name="context"></param>
            /// <returns></returns>
            public string GetClientIP(HttpContext context)
            {
                string strIPAddr;
                string strHttpXForwardedFor = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                if (string.IsNullOrEmpty(strHttpXForwardedFor) ||
                    (strHttpXForwardedFor.IndexOf("unknown") >= 0))
                {
                    strIPAddr = context.Request.ServerVariables["REMOTE_ADDR"];
                }
                else if (strHttpXForwardedFor.IndexOf(",") >= 0)
                {
                    strIPAddr = strHttpXForwardedFor.Substring(0, strHttpXForwardedFor.IndexOf(","));
                }
                else if (strHttpXForwardedFor.IndexOf(";") >= 0)
                {
                    strIPAddr = strHttpXForwardedFor.Substring(0, strHttpXForwardedFor.IndexOf(";"));
                }
                else
                {
                    strIPAddr = strHttpXForwardedFor;
                }
                return strIPAddr.Trim();
            }