我有一个在c#中的asp.net网页。我们想要做的一件事是跟踪网站的点击量,包括它们的IP地址。我实现了一些代码(得益于SO),但记录的IP地址似乎总是本地的,即:192.168.x.x。我尝试了多种设备,甚至包括我的手机和Version MiFi,只是为了确保它不是与ISP有关的奇怪问题,但日志始终列出相同的2-3个不同的内部IP地址(似乎会随着时间而略微变化)。
这是我获取IP的函数(再次感谢SO上的帖子):
我也尝试了这个,结果相同。
当我在客户端使用像appspot上的服务进行调用时,它能正常工作。
我想我可以通过点击那个appspot链接并解析它来绕过这个问题,但这似乎对于本应该简单的事情来说太麻烦了。
可能是服务器上的IIS出了问题?或者发生了某种重定向?记录的IP地址不是服务器的IP地址。问题在于我没有直接访问它的权限,所以我必须与管理它的人交谈,并希望在他们开始更改任何东西之前给他们一些方向。
谢谢。
Ernie
这是我获取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;
当我在客户端使用像appspot上的服务进行调用时,它能正常工作。
<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地址不是服务器的IP地址。问题在于我没有直接访问它的权限,所以我必须与管理它的人交谈,并希望在他们开始更改任何东西之前给他们一些方向。
谢谢。
Ernie