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;
            }

在上面的代码中,我尝试了 4 种不同的方法(这些方法由 // 注释)来获取 userData。但是我在所有这 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我无法访问服务器,所以我 ping www.google.com 并获得了 IP 地址74.125.225.113。使用该 IP 地址,Ektron 给了我一个非空响应。

我以为我也安装了 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 回答