獲取客戶端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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM