首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#确实需要外部ip来实现最大限度的智能服务

C#确实需要外部ip来实现最大限度的智能服务
EN

Stack Overflow用户
提问于 2018-08-24 00:40:47
回答 3查看 99关注 0票数 0

我们在我们的web应用程序中使用maxmind geo ip位置服务。利用这个maxmind,我们需要ipaddress作为输入。

我们遵循下面的代码片段来获取Ip地址。

代码语言:javascript
复制
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");
}

我们是在公司网络下,所以在本地环境和开发环境中,我们通常会获得像10.x这样的私有ip地址。

使用此地址时,我们总是无法定位客户端位置。

我们真的需要获取外部/公共ips来为maxmind服务提供输入吗?

EN

回答 3

Stack Overflow用户

发布于 2018-08-24 00:50:59

您正在将Maxmind用于IP服务,该服务与您的客户端的 IP有关,而不是您的。

  • 你想要对谁进行地理定位?
  • 对于欺诈服务,你想评估谁?

Private IPs被内部网络广泛使用(像您的家庭和公司/企业),所以它们是而不是唯一的(除了在公共互联网上不可路由等)。

票数 0
EN

Stack Overflow用户

发布于 2018-08-24 13:51:33

所有地理位置提供程序仅在公共IP地址上工作。LAN中正在使用私有IP地址,只要它不在同一个LAN中,就可以重新分配。确定地理位置信息不存在唯一性。

票数 0
EN

Stack Overflow用户

发布于 2018-08-24 19:34:20

您正确地使用了10.xx.xx.xx范围,该范围是为私人(内部)使用而保留的。

你所需要做的就是修改你的代码,这样在你的Maxmind查找之前,你就可以用一个相同地区的"public“IP替换要查找的"10”IP。如果您的公司有多个位置,那么您可以创建一个内部If数组/表,以公开“区域设置标识”If。

例如,如果美国洛杉矶的部门使用10.222.xx.xx;而美国纽约使用10.123.xx.xx地址,那么对于这些IP,只需使用“等效”公共IP的Maxmind查找即可。因此,对于10.123.xx.xx (纽约,美国),请查看154.16.85.37。

你甚至可能根本不需要为你的"10个IP“使用Maxmind。例如,如果您只需要国家代码;则将其包括在您自己的"IP 10“查找表/数组中,并且对于前缀为10的IP,而不是从您自己的表中查找Maxmind。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51990574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档