我们在Web应用程序中使用maxmind geo ip定位服务。利用这个maxmind,我们需要ipaddress作为输入。
我们正在按照以下代码片段获取IP地址。
var ip = Request.UserHostAddress;
if (Request.Headers["X-Forwarded-For"] != null)
{
ip = Request.Headers["X-Forwarded-For"];
Console.WriteLine(ip + "|X-Forwarded-For");
}
else if (Request.Headers["REMOTE_ADDR"] != null)
{
ip = Request.Headers["REMOTE_ADDR"];
Console.WriteLine(ip + "|REMOTE_ADDR");
}
我们处于公司网络之下,因此在本地环境和开发环境中,我们习惯于获取私有IP地址,例如10.X.X.X。
使用此地址,我们总是无法找到客户位置。
真正的问题是,当您将外部/公共ip(190.X.X.X)传递给maxmind时,仅能正常工作。
我们真的需要获取外部/公共ip来为maxmind服务提供输入吗?
答案 0 :(得分:0)
您正在使用Maxmind提供IP服务,该服务与您的客户的 IP(而不是您的IP)有关。
Private IPs被内部网络(家庭和公司/企业,如您的网络)广泛使用,因此它们不是唯一的(除了在公共互联网上不可路由之外,等)
答案 1 :(得分:0)
所有地理位置提供商仅在公共IP地址上工作。专用IP地址正在LAN中使用,并且只要不在同一LAN中就可以重新发出。确定地理位置信息没有唯一性。
答案 2 :(得分:0)
您正确使用的是10.xx.xx.xx范围,该范围保留供私人(内部)使用。
您需要做的就是更改代码,以便在进行Maxmind查找之前,将要查找的“ 10” IP替换为针对同一语言环境的“公共” IP。如果您的公司有多个位置,那么您可以创建内部IP的数组/表来公开“区域设置” IP。
例如如果美国洛杉矶的部门使用10.222.xx.xx;美国纽约州则使用10.123.xx.xx地址,然后对这些IP进行简单的Maxmind查找,并使用“等效”公共IP。因此对于10.123.xx.xx(美国纽约州),请查询154.16.85.37。
对于“ 10个IP”,甚至可能根本不需要使用Maxmind。例如。如果您只需要国家代码;然后将其包含在您自己的“ IP 10”查找表/阵列中,并添加前缀为10的IP,而不是从您自己的表中查找Maxmind查找。