获取客户端IP,

今天Boss说,项目中的报错邮件发回的客户端IP地址不对,居然是自己服务器端的IP地址...我那个汗了一把...百度了一堆,最会也木有找到更好的方法,希望园子里的大牛们给小弟指点指点...

下面是正在使用的获取IP地址的方法. 正如你看到的,有时候仍旧取不到真的准确的IP地址,我想要个能百分之百取得IP地址的方法,只能跪求了....

/// <summary>
    /// 获取ip
    /// </summary>
    /// <param name="m_p">当前页</param>
    /// <returns>IP</returns>
    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;
    }

 

转载于:https://www.cnblogs.com/ry123/archive/2012/06/15/2550362.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值