在 c# 中有一个 asp.net 网页。我们想做的一件事是跟踪网站的点击,包括他们的 IP 地址。我实现了一些代码(感谢 SO),但记录的 IP 地址似乎总是本地的,即:192.168.xx 我已经从各种设备上尝试过,甚至是我的手机和版本 MiFi,只是为了确保它不奇怪ISP,但日志总是列出相同的 2-3 个不同的内部 IP 地址(随着时间的推移,似乎会发生一些变化)。
这是我获取 IP 的函数(再次感谢 SO 上的帖子):
protected IPAddress GetIp(HttpRequest request)
{
string ipString;
if (string.IsNullOrEmpty(request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
ipString = request.ServerVariables["REMOTE_ADDR"];
else
ipString = request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
IPAddress result;
if (!IPAddress.TryParse(ipString, out result))
result = IPAddress.None;
return result;
}
public void logHit()
{
IPAddress ip = GetIp(Request);
string sIP = ip.ToString();
}
我也试过这个,产生相同的结果:
HttpContext.Current.Request.UserHostAddress;
当我使用 apppot 上的服务之类的东西在客户端进行呼叫时,它工作得很好:
<script type="application/javascript">
function getip(json) {
//txtIP is a input box on the form
document.getElementById("txtIP").value = json.ip;
}
</script>
<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>
我想我可以通过点击那个appspot链接并解析它来做一个迂回的方法,但是对于应该很简单的事情来说,这似乎是一个很大的麻烦。
会不会是服务器上的 IIS?某种重定向正在进行?记录的 IP 地址不是服务器。问题是我无法直接访问它,所以我必须与管理它的人交谈,并希望在他们开始改变之前给他们一些指导。
谢谢
厄尼