C#获取真实IP地址实现方法

2019-12-26 12:16:57于丽
易采站长站为您分析C#获取真实IP地址实现方法,对比了C#获取IP地址的常用方法并实例展示了C#获取真实IP地址的方法,非常具有实用价值,需要的朋友可以参考下    

本文实例讲述了C#获取真实IP地址实现方法,。具体实现方法如下:

通常来说,大家获取用户IP地址常用的方法是:

 

复制代码 string IpAddress = "";

 

if((HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null 
&& HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] !=String.Empty) )
{
        IpAddress=HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ;
}
else

        HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
}

 


事实上,上面的代码只试用与用户只使用了1层代理,如果用户有2层,3层HTTP_X_FORWARDED_FOR 的值是:"本机真实IP,1层代理IP,2层代理IP,....." ,如果这个时候你的数据中保存IP字段的长度很小(15个字节),数据库就报错了。

实际应用中,因为使用多层透明代理的情况比较少,所以这种用户并不多。

获取用户真实IP的方法

 

复制代码 using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
namespace Common
{
    /// <summary>
    /// IPAddress 的摘要说明
    /// </summary>
public class IPAddress : System.Web.UI.Page
{

 

    public static Int64 toDenaryIp ( string ip )
    {
        Int64 _Int64 = 0;
        string _ip = ip;
        if ( _ip.LastIndexOf ( "." ) > -1 )