2014-01-23 24 views
1

我們有幾個國際合作夥伴/網站抱怨他們的流量被我們國內網站(位於美國)「盜用」。我認爲最好是實施免費的geoip服務,以便在我們的國內網站發生重定向選項時,向我們的國際用戶提供適當的網站。是否有人在C#webform上實現maxmind的免費GeoLiteCity DB成功?

研究的自由選擇後,我發現的MaxMind提供了一個完整的方案與相當準確的名稱IP地址數據的選項(IPv4和IPv6在內)。事實上,我們的管理層強烈建議使用MaxMind的實施。

我最近下載的MaxMind的免費GeoLiteCity.dat和我的家庭網站GitHub的C#代碼。我發現文檔非常模糊,因爲它涉及到在除了控制檯應用程序之外的任何其他應用程序上實現其C#代碼。

在我的當前網站上實現它之前 - 在我的開發環境中,我成功地在控制檯應用程序上測試了數據庫和API的實現,然後成功地在模擬網站的aspx頁面上進行測試。我目前在我的開發環境中遇到了可怕的「對象引用未設置爲對象的實例」錯誤。

我已經添加了類庫的MaxMind也加入參考該類庫。

有沒有人遇到,而使用C#代碼實現的MaxMind的數據問題?有沒有人成功地利用了MaxMind的數據和C#代碼的網絡表單?我將不勝感激。如果您可以提供實現過程的演練,並且可能提供了一些適用於您的示例C#代碼,那麼我會真正感謝它。

+1

這是一個巨大的問題,不可能沒有多數民衆贊成錯誤的代碼來回答。我建議放在一起是真實失敗,問一個具體問題上,失敗,而不是要求在整個過程中諮詢的代碼。 –

+0

謝謝你,羅伯特,「對象引用沒有設置爲對象的實例」錯誤出現在堆棧跟蹤中,失敗的代碼實際上是由API(LookupService.cs)提供的類。 – sidRiggins

+0

你看過嗎[GeoIP2 API](https://github.com/maxmind/GeoIP2-dotnet)?它在NuGet上可用,我認爲這些文檔通常質量更高。 –

回答

0

我不得不指定一個完整的文件系統路徑來讓它讀取數據庫!我可能錯過了一些東西,但相對路徑無論如何都不起作用!

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 

它工作後,它沒有返回城市名稱,只有國家!多浪費時間! :(

相關問題