#region 获取客户端IP地址

         /// <summary>
         /// 获取客户端IP地址
         /// </summary>
         /// <returns></returns>
         public static string GetIP()
         {
             string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
             if (string.IsNullOrEmpty(result))
             {
                 result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
             }
             if (string.IsNullOrEmpty(result))
             {
                 result = HttpContext.Current.Request.UserHostAddress;
             }
             if (string.IsNullOrEmpty(result))
             {
                 return "0.0.0.0";
             }
             return result;
         }

         #endregion

         #region 取客户端真实IP

         ///  <summary>
         ///  取得客户端真实IP。如果有代理则取第一个非内网地址
         ///  </summary>
         public static string GetIPAddress
         {
             get
             {
                 var result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                 if (!string.IsNullOrEmpty(result))
                 {
                     //可能有代理
                     )        //没有“.”肯定是非IPv4格式
                         result = null;
                     else
                     {
                         )
                         {
                             //有“,”,估计多个代理。取第一个不是内网的IP。
                             result = result.Replace("  ", "").Replace("'", "");
                             string[] temparyip = result.Split(",;".ToCharArray());
                             ; i < temparyip.Length; i++)
                             {
                                 if (IsIPAddress(temparyip[i])
                                         && temparyip[i].Substring(, ) != "10."
                                         && temparyip[i].Substring(, ) != "192.168"
                                         && temparyip[i].Substring(, ) != "172.16.")
                                 {
                                     return temparyip[i];        //找到不是内网的地址
                                 }
                             }
                         }
                         else if (IsIPAddress(result))  //代理即是IP格式
                             return result;
                         else
                             result = null;        //代理中的内容  非IP,取IP
                     }

                 }

                 string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty) ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"];

                 if (string.IsNullOrEmpty(result))
                     result = HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"];

                 if (string.IsNullOrEmpty(result))
                     result = HttpContext.Current.Request.UserHostAddress;

                 return result;
             }
         }

         #endregion

         #region  判断是否是IP格式

         ///  <summary>
         ///  判断是否是IP地址格式  0.0.0.0
         ///  </summary>
         ///  <param  name="str1">待判断的IP地址</param>
         ///  <returns>true  or  false</returns>
         public static bool IsIPAddress(string str1)
         {
              || str1.Length > ) return false;

             const string regFormat = @"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}$";

             var regex = new Regex(regFormat, RegexOptions.IgnoreCase);
             return regex.IsMatch(str1);
         }

         #endregion

         #region 获取公网IP
         /// <summary>
         /// 获取公网IP
         /// </summary>
         /// <returns></returns>
         public static string GetNetIP()
         {
             string tempIP = "";
             try
             {
                 System.Net.WebRequest wr = System.Net.WebRequest.Create("http://city.ip138.com/ip2city.asp");
                 System.IO.Stream s = wr.GetResponse().GetResponseStream();
                 System.IO.StreamReader sr = new System.IO.StreamReader(s, System.Text.Encoding.GetEncoding("gb2312"));
                 string all = sr.ReadToEnd(); //读取网站的数据  

                 ;
                 int end = all.IndexOf("]", start);
                 tempIP = all.Substring(start, end - start);
                 sr.Close();
                 s.Close();
             }
             catch
             {
                 )
                     tempIP = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[].ToString();
                 if (string.IsNullOrEmpty(tempIP))
                     return GetIP();
             }
             return tempIP;
         }
         #endregion  

获取客户端IPAsp.Net的更多相关文章

  1. PHP获取客户端IP

    /** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...

  2. C#服务器获取客户端IP地址以及归属地探秘

    背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解.一日老婆逛完某宝,问:"为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?" 顺着这个问题我们的探秘 ...

  3. ASP.NET获取客户端、服务器端的信息

    ASP.NET获取客户端.服务器端基础信息 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名: ...

  4. 负载均衡的场景下ASP.NET Core如何获取客户端IP地址

    在ASP.NET中,使用负载均衡时,可以通过ServerVariables获取客户端的IP地址. var ip = request.ServerVariables["HTTP_X_FORWA ...

  5. 在Thinkphp3.2.3框架下实现自动获取客户端IP地址的get_client_ip()函数

    在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示 ...

  6. JavaScript获取客户端计算机硬件及系统等信息的方法

    JavaScript获取客户端计算机硬件及系统等信息的方法 JavaScript 获取客户端计算机硬件及系统信息 通过WMI来实现获取客户端计算机硬件及系统信息: function getSysInf ...

  7. .NET 获取客户端的操作系统版本、浏览器版本和IP地址

    我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...

  8. 根据Request获取客户端IP 内网IP及外网IP

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...

  9. Apache 日志管理,获取客户端端口号

    日志管理分类 日志文件是用户管理和监控 Apache 安全的非常好的第一手资料,它清晰地记录了客户端访问 Apache 服务器资源的每一条记录,以及在访问中出现的错误信息,可以这样说,Apache 可 ...

随机推荐

  1. 安卓入门学习之Hello,world!

    第二章 Hello,world! 本文同时发表至简书,不为什么,用他的MarkDown在线编辑爽得要哭. 注意:本章节所使用的开发工具为Eclipse 以Android编程权威指南作为学习书物 第一节 ...

  2. An Introduction to Interactive Programming in Python

    这是在coursera上面的一门学习pyhton的基础课程,由RICE的四位老师主讲.生动有趣,一共是9周的课程,每一周都会有一个小游戏,经历一遍,对编程会产生很大的兴趣. 所有的程序全部在老师开发的 ...

  3. EBS动态创建账户组合实现

    目的:使用程序动态创建账户组合.如果账户组合存在的话,返回存在的ID,不存在的话就动态创建账户组合并返回id. 实现步骤: 1. 得到账簿的CHART_OF_ACCOUNTS_ID 2. 得到账户弹性 ...

  4. memcache学习使用

    一.安装 二.telnet测试 启动:memcached -d -m 120.24.242.100 -p 11211 -u root 测试:telnet localhost 11211 >> ...

  5. Python学习之路——迭代器、生成器、算法基础、正则

    一.迭代器: 迭代器是访问集合元素的一种方式. 迭代器对象是从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 另外,迭代 ...

  6. logback自定义格式转换器

    创建自定义格式转换符有两步. 首先,必须继承ClassicConverter类.ClassicConverter对象负责从ILoggingEvent 提取信息,并产生一个字符串.例如,LoggerCo ...

  7. Codeforces AIM Tech Round (Div. 2)

    这是我第一次完整地参加codeforces的比赛! 成绩 news standings中第50. 我觉这个成绩不太好.我前半小时就过了前三题,但后面的两题不难,却乱搞了1.5h都没有什么结果,然后在等 ...

  8. Spreadsheets

    很水的一道题,提醒自己要认真,做的头都快晕了.考虑26的特殊情况. D - Spreadsheets Time Limit:10000MS     Memory Limit:65536KB     6 ...

  9. Oracle执行计划——处理一种并行hint不生效的情况

    刚刚在itpub上看到有人在问并行hint不生效的一个问题.我做了实验也出现一样的问题,如下: 原因在这是小表,在联合时走索引了,加上full的hint,就可以启动并行的执行计划. 当然也可以采用pa ...

  10. 【LeetCode】【Python题解】Single Number &amp; Maximum Depth of Binary Tree

    今天做了三道LeetCode上的简单题目,每道题都是用c++和Python两种语言写的.由于c++版的代码网上比較多.所以就仅仅分享一下Python的代码吧,刚学完Python的基本的语法,做做Lee ...