代码放在一个远程的服务器上,我是使用无线上网的
使用我的代码获取的结果是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");
但是很多都不能用,接口没有响应
试试这个
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;
System.Web.HttpContext”不包含“Connection”的定义
@寻找薛定谔的猫: 上面的代码是.net core中的,你的代码是.net framework框架的吗?
@Shendu.CC: 是的,4.0和4.5都有
@Shendu.CC: 我刚试了我原来的代码,在别的机器上访问结果也是222.88.128.68。又远程登录到服务器上打开网站,获得的服务器IP是对的。
我试的两台机器都是同一个wifi,难道是这个影响的?
@寻找薛定谔的猫: 你这个代码是获取HttpContext.Request的ip地址,也就是你发起请求的服务器的ip地址,不是你部署网站服务器的ip地址。你的两台机器用同一个wifi,ip自然是一样的。
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script type="text/javascript">
document.write(returnCitySN["cip"] + ',' + returnCitySN["cname"]);
</script>
用搜狐接口试试