日期:2014-05-17  浏览次数:20389 次

asp.net 怎样获取局域网中客户端的真实外网IP
Response.Write("1<br/>" + HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + "<br/>");
            Response.Write("2<br/>" + HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] + "<br/>");
            Response.Write("3<br/>" + HttpContext.Current.Request.UserHostAddress + "<br/>");
            Response.Write("4<br/>" + System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName()).GetValue(0).ToString() + "<br/>");



这几种方法都不行,获取的都是局域网内的IP,我想得到的是像你打开http://www.ip138.com
的这种IP,我就想判断IP是不是电信的,咋就这么难。。。
asp.net 获取IP

------解决方案--------------------
放在互联网上测试就可以看到互联网IP了,在局域网或本机测试是看不到互联网IP的,因为这种情况不需要经历任何互联网的节点。
------解决方案--------------------
引用:
Response.Write("1<br/>" + HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + "<br/>");
            Response.Write("2<br/>" + HttpContext.Current.Request.ServerVariable……


你的网站放在那里?是不是局域网和互联网都能同时访问?

------解决方案--------------------
你网站不是放在外网吧,这样当然不行吧
------解决方案--------------------
引用:
引用:Response.Write("1<br/>" + HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + "<br/>");
            Response.Write("2<br/>" + HttpContext.Current.Re……



似乎是这样的
------解决方案--------------------
/// 获得客户端IP
    /// 
    /// <returns></returns>
    private string getIp()
    {
        // 穿过代理服务器取远程用户真实IP地址
        string Ip = string.Empty;
        if (Request.ServerVariables["HTTP_VIA"] != null)
        {
            if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == null)
            {
                if (Request.ServerVariables["HTTP_CLIENT_IP"] != null)
                    Ip = Request.ServerVariables["HTTP_CLIENT_IP"].ToString();
                else
                    if (Request.ServerVariables["REMOTE_ADDR"] != null)
                        Ip = Request.ServerVariables["REMOTE_ADDR"].ToString()