永发信息网

C# 获取请求的真实IP,要正确的答案,不然会误导了更多的人,谢谢。

答案:2  悬赏:70  手机版
解决时间 2021-03-17 13:56
C# 获取请求的真实IP,要正确的答案,不然会误导了更多的人,谢谢。
最佳答案
public static string IP
     {
         get
         {
             string result = String.Empty;
             result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
             if ( result != null && result != String.Empty )
             {
                //可能有代理
                if ( result.IndexOf ( "." ) == -1 ) //没有"."肯定是非IPv4格式
                    result = null;
                 else
                 {
                     if ( result.IndexOf ( "," ) != -1 )
                     {
                          //有",",估计多个代理。取第一个不是内网的IP。
                        result = result.Replace ( " ", "" ).Replace ( "", "" );
                         string[] temparyip = result.Split ( ",;".ToCharArray() );
                         for ( int i = 0; i < temparyip.Length; i++ )
                         {
                             if ( IsIPAddress ( temparyip[i] )
                                     && temparyip[i].Substring ( 0, 3 ) != "10."
                                     && temparyip[i].Substring ( 0, 7 ) != "192.168"
                                     && temparyip[i].Substring ( 0, 7 ) != "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["REMOTE_ADDR"];

             if ( null == result || result == String.Empty )
                 result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            if ( result == null || result == String.Empty )
                 result = HttpContext.Current.Request.UserHostAddress;
            return result;
         }
     }直接以变量形式调用IP就行了
全部回答
不明白啊 = =!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问在苏州如何订阅苏州日报和扬子晚报
不放在冰箱里。干核桃用真空包装里面在放上干
2016年高考倒计时45天了,从350分逆袭到550分
晔阳广告在哪里啊,我有事要去这个地方
作文《一根绳子拴两只狗》
这种草一碰有柠檬香味,叶子上有绒毛,是什么
初中生英语游记在线阅读
有带昆字的网名吗
index.htm是什么意思
柠檬工坊(河津店)怎么去啊,有知道地址的么
相亲认识的对象,马上就定婚了,跟她说我家借
苹果一体机装双系统后,另一系统要不要自动更
鼻子上缝了20多针。拆线18天了。会留疤吗。留
查看日历黄道吉日20l6年3月份开业日
囚铁笼中的少女:懒懒小兽妃,有没有更新,我
推荐资讯
手机卡住重启后没有以前的功能
重装系统后,开机后不久总是出现wudfsvc已停
单选题专家指出,虽然人身自由是公民的基本权
柳工25吨的吊车和徐工25吨性比价
扇贝喝啤酒对身体有害吗?
好太太智能晾衣架NO.0380地址有知道的么?有
求大神告知如何解除OPPOR7P得程序密码,我知
盐和小红香治不治肩周炎
桂林到临桂可以做什么车?大概要多长时间?
飞言情飞魔幻的短篇小说打包下载玩齐全一点点
买的工伤保险去医院看病医生要些什么
用胡萝卜做小动物的书叫什么名字
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?