C# 最大地球定位异常

C# 最大地球定位异常,c#,geolocation,maxmind,C#,Geolocation,Maxmind,我有一个使用MaxMind本地数据库基于IP地址对用户进行地理定位的站点。我发现桌面上的结果与手机上的结果不同。例如: 我正在使用X-Forwarded-For标头进行地理定位 我的手机在邮政编码18036处找到我,大约50英里 走开 我使用IPv4/IPv6双栈测试在手机上查找ip地址 使用桌面上的浏览器扩展,我将X-Forwarded-For头设置为相同的IP地址 桌面把我放在19428年,这仍然是错误的,但有很多 接近正确 为什么会有区别 以下是我执行查找的方式: var ip = h

我有一个使用MaxMind本地数据库基于IP地址对用户进行地理定位的站点。我发现桌面上的结果与手机上的结果不同。例如:

  • 我正在使用X-Forwarded-For标头进行地理定位
  • 我的手机在邮政编码18036处找到我,大约50英里 走开
  • 我使用IPv4/IPv6双栈测试在手机上查找ip地址
  • 使用桌面上的浏览器扩展,我将X-Forwarded-For头设置为相同的IP地址
  • 桌面把我放在19428年,这仍然是错误的,但有很多 接近正确
为什么会有区别

以下是我执行查找的方式:

var ip = httpContext.Request.Headers["X-Forwarded-For"];

CityResponse cityResponse;
using (_dbReader = new DatabaseReader(fullPath, FileAccessMode.Memory))
{
    cityResponse = _dbReader.City(ip);
}
更新


您的手机是否连接到与桌面相同的WiFi?还是通过3G/4G连接

否。为了确保手机和桌面看到相同的东西:

  • 我的网站明确地关注IP定位——我不是在利用浏览器定位服务,它可能使用多种方法来确定你的位置

  • 当我在手机上搜索时,我关掉了wifi,所以它肯定是在使用3G/4G

  • 在手机上定位后,我在浏览器中使用“What my IP”检索手机的IP地址

  • 我在浏览器中使用X-Forwarded-For标头欺骗了手机的IP,并确保我的网站查看的是该标头,而不是实际的IP(可能是内部IP)


  • 如果您使用Wifi,并且与您的计算机在同一网络上,则不会有任何差异,因为公共IP地址(WAN IP地址)将是相同的


    如果您的手机位于计算机所在网络以外的网络上,则无法确定您将被分配到哪个ISP(在给定时间)以及为您的手机分配了哪个IP地址。如果移动电话塔发生故障或过载,您的连接将是

    您的手机是否连接到与桌面相同的WiFi?或者它是通过3G/4G连接的?对投票结果有何解释?老实说,我想知道,所以我不再这样做了。我投了反对票,因为我问了一个你似乎没有回答的问题。你确实在对下面答案的评论中回答了这个问题,但你没有用这些信息更新你的帖子——这是为了让别人更容易找到。桌面在公司网络上。手机是在蜂窝网络上。但是我检查了我的手机ip,然后在桌面上伪造了那个ip。你能试试别的网站吗?去隐姓埋名,试试谷歌地图。根据自动更正建议查看您的位置。谷歌地图非常准确,但它使用的不仅仅是您的ip吗?谷歌地图有时会使用您的无线接入点来确定您的位置