【问题标题】:Has anyone had success implementing maxmind's free GeoLiteCity DB on a C# webform?有没有人在 C# 网络表单上成功实现了 maxmind 的免费 G​​eoLiteCity DB?
【发布时间】:2014-01-23 21:13:38
【问题描述】:

我们有几个国际合作伙伴/网站抱怨我们的国内网站(位于美国)“窃取”了他们的流量。我认为最好实施免费的 geoip 服务,以便为我们的国际用户提供重定向选项,以在他们发生在我们的国内站点上时转到他们的适当站点。

在研究了免费选项后,我发现 MaxMind 提供了一个完整的软件包,其中包含相当准确的 IP 地址数据选项(包括 ipV4 和 ipv6)。事实上,我们的管理层强烈建议使用 MaxMind 的实现。

我最近为我的国内网站下载了MaxMind的免费GeoLiteCity.dat和github的C#代码。我发现文档非常模糊,因为它与在除控制台应用程序之外的任何东西上实现他们的 C# 代码有关。

在我当前的网站上实现它之前 - 在我的开发环境中,我成功地测试了数据库的实现,以及控制台应用程序上的 API,然后在模拟网站的 aspx 页面上成功测试。我目前在我的开发环境中遇到可怕的“对象引用未设置为对象的实例”错误。

我已经为 MaxMind 添加了类库,并且还添加了对该类库的引用。

是否有人在使用 C# 代码时遇到了实现 MaxMind 数据的问题?有没有人在 webform 上成功使用 MaxMind 的数据和 C# 代码?我将不胜感激。如果您能提供实现过程的演练,或许还有一些对您有效(或有效)的示例 C# 代码,我将不胜感激。

【问题讨论】:

  • 这是一个巨大的问题,如果没有失败的代码就无法回答。我建议将失败的代码放在一起,并就该失败提出一个具体问题,而不是要求就整个过程进行咨询。
  • 谢谢你,罗伯特。 “对象引用未设置为对象的实例”错误显示在堆栈跟踪中。失败的代码实际上是API(LookupService.cs)提供的一个类。
  • 你看过GeoIP2 API吗?它在 NuGet 上可用,我认为文档通常质量更高。
  • 谢谢你,奥斯瓦尔德。我看过 GeoIP2 API。它需要 Maxmind 的用户 ID 和许可证密钥。我目前正在查看他们针对 C# 的免费数据库实现。 MaxMind 不为其免费服务提供故障排除/支持。他们对支持/故障排除的建议是 stackoverflow 上的留言板。 MaxMind 甚至从他们的免费服务页面提供了到 stackoverflow 的直接链接。因此,我的第一个帖子。我面临的问题是这里似乎没有太多关于他们数据库的 C# 实现的信息。
  • Oschwald,我正在尝试为 C# 实现您建议的 GeoIP2 API。我相应地遵循了文档。有关需要许可证密钥等的行列在有关 Web 服务实现的文档页面上;我很抱歉。尽管如此,在调试了我的代码之后,还是出现了“FileNotFound Exception”。 GeoLite2-City.mmdb 文件应该有一个特定的位置吗?或者处理对 mmdb 文件的引用的特定方式?我仍然发现实施文档含糊不清且令人困惑。我为我的无知道歉 - 我是一名 1 年的初级 Web 开发人员。

标签: c# asp.net geoip maxmind


【解决方案1】:

我必须指定一个完整的文件系统路径才能让它读取数据库!!我可能错过了一些东西,但无论如何相对路径都不起作用!

var reader = new DatabaseReader(@"C:\Users\[User Name]\documents\visual studio 2013\Projects\glocalmvc\glocalmvc\Controllers\GeoLite2_City.mmdb", MaxMind.Db.FileAccessMode.Memory);

        var omni = reader.Omni("1.1.1.1"); // replace it with a real ip address

它工作后,它没有返回城市名称,只有国家!真是浪费时间! :(

【讨论】:

    猜你喜欢
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多