使用EKTRON API获取用户位置信息

时间:2013-06-06 05:58:18

标签: api ektron

我有一个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;
            }

在上面的代码中,我尝试了4种不同的方法(这些方法由//注释)来获取userData。但是我在所有这4次尝试中都获得了空值,这就是我在userData.CountryCode;

中获得异常的原因

我该如何解决这个问题?

IP中,我的价值为::1Ektron.Cms.UserContext.IP的价值也为::1

我正在使用ektron 8.7

1 个答案:

答案 0 :(得分: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)

我在我的开发机器上本地运行该网站,所以我正在浏览http://localhost/test.aspx - 对于我而言Ektron.Cms.UserContext.IP正在返回“:: 1”并不奇怪。我无法访问服务器,所以我ping了www.google.com并获得了 74.125.225.113 的IP地址。使用该IP地址,Ektron给了我一个非空响应。

我以为我也安装了v8.61,但是当我在该环境中运行相同的代码时,我收到以下错误:System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.

我会尝试清理我的v8.6安装,看看代码是否也能正常运行,但与此同时,我会尝试使用一些已知的IP地址,看看你是否能获得更好的结果。