0

私は ektron アプリケーションを持っており、次のコードを使用してユーザーの位置情報を取得しています。

            try
            {
                string IP = HttpContext.Current.Request["remote_addr"];
                if (!string.IsNullOrEmpty(HttpContext.Current.Request["ip"]))
                    IP = HttpContext.Current.Request["ip"];
                else
                    IP="my system ip";


                    //var userData = Ektron.Cms.UserContext.GetLocationInfo(IP);
                    //var userData = Ektron.Cms.UserContext.GetLocationInfo("my system ip");
                    //Ektron.Cms.UserLocationData userData = Ektron.Cms.UserContext.GetCurrentUserLocationInfo();
                   //var userData = Ektron.Cms.UserContext.GetLocationInfo(IP);


                  visitorCountry = userData.CountryCode;
            }

上記のコードでは、userData を取得するために 4 つの異なるメソッド (これらは // でコメントされています) を試しました。しかし、これら4回の試行すべてでnull値を取得しているため、例外が発生していますuserData.CountryCode;

どうすればこれを解決できますか?

IP私は価値を得て::1おり、またEktron.Cms.UserContext.IP価値を与えています::1

私は使っているektron 8.7

4

1 に答える 1

0

現在、v8.7 は実行していませんが、v9 は実行しています。

次のコードを実行しました。

var location = Ektron.Cms.UserContext.GetLocationInfo("74.125.225.113");

Response.Write("<pre>" + Ektron.Cms.UserContext.IP + "</pre>");
Response.Write("<pre>" + string.Format("{0}, {1} ({2} / {3})", location.City, location.Region, location.Longitude, location.Latitude) + "</pre>");

画面に表示された内容は次のとおりです。

::1
Mountain View, CA (-122.057403564453 / 37.4192047119141)

私は自分の開発マシンでサイトをローカルで実行しているので、ブラウジングしています- 「::1」を返すのはhttp://localhost/test.aspx驚くことではありません。Ektron.Cms.UserContext.IPサーバーにアクセスできなかったので、www.google.com に ping を実行し、74.125.225.113の IP アドレスを取得しました。その IP アドレスを使用すると、Ektron は null 以外の応答を返しました。

v8.61 もインストールされていると思っていましたが、その環境で同じコードを実行すると、次のエラーが発生しました。 System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.

v8.6 のインストールをクリーンアップして、そこでもコードが機能するかどうかを確認しますが、それまでの間、いくつかの既知の IP アドレスを使用して、より良い結果が得られるかどうかを確認します.

于 2013-07-09T21:51:49.693 に答える