首页 新闻 会员 周边

c#获取本机的公网IP

0
悬赏园豆:20 [已解决问题] 解决于 2024-02-05 09:36

代码放在一个远程的服务器上,我是使用无线上网的
使用我的代码获取的结果是222.88.128.68
我的代码是
public string GetIpAddress()
{
string userIP = string.Empty;
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "")
userIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
else
userIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (userIP == null || userIP == "")
userIP = HttpContext.Current.Request.UserHostAddress;
return userIP;
}
但是在各大IP查询网站获取的结果是222.139.8.98
两个IP都是河南省安阳市的,一个是联通,一个是电信

我看到网上很多使用WebRequest去请求一个第三方网址,然后返回查询结果
比如这样子
WebRequest wr = WebRequest.Create("http://www.ip138.com/ips138.asp");
但是很多都不能用,接口没有响应

teagueli的主页 teagueli | 初学一级 | 园豆:75
提问于:2019-02-26 16:58
< >
分享
最佳答案
0

试试这个

var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
            if (string.IsNullOrEmpty(ip))
            {
                ip = context.Connection.RemoteIpAddress?.ToString();
            }

if (!string.IsNullOrEmpty(ip))
            {
                var commaIndex = ip.LastIndexOf(",");
                if (commaIndex >= 0)
                {
                    ip = ip.Substring(commaIndex + 1);
                }
            }
            return ip;

收获园豆:20
Shendu.CC | 老鸟四级 |园豆:2138 | 2019-02-26 17:24

System.Web.HttpContext”不包含“Connection”的定义

teagueli | 园豆:75 (初学一级) | 2019-02-26 17:37

@寻找薛定谔的猫: 上面的代码是.net core中的,你的代码是.net framework框架的吗?

Shendu.CC | 园豆:2138 (老鸟四级) | 2019-02-26 18:17

@Shendu.CC: 是的,4.0和4.5都有

teagueli | 园豆:75 (初学一级) | 2019-02-27 08:33

@Shendu.CC: 我刚试了我原来的代码,在别的机器上访问结果也是222.88.128.68。又远程登录到服务器上打开网站,获得的服务器IP是对的。

teagueli | 园豆:75 (初学一级) | 2019-02-27 08:55

我试的两台机器都是同一个wifi,难道是这个影响的?

teagueli | 园豆:75 (初学一级) | 2019-02-27 09:00

@寻找薛定谔的猫: 你这个代码是获取HttpContext.Request的ip地址,也就是你发起请求的服务器的ip地址,不是你部署网站服务器的ip地址。你的两台机器用同一个wifi,ip自然是一样的。

Shendu.CC | 园豆:2138 (老鸟四级) | 2019-02-27 10:11
其他回答(2)
0

<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script type="text/javascript">
document.write(returnCitySN["cip"] + ',' + returnCitySN["cname"]);
</script>
用搜狐接口试试

三人乐乐 | 园豆:4819 (老鸟四级) | 2019-02-27 10:27
0
徒然喜欢你 | 园豆:1741 (小虾三级) | 2019-02-27 17:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册