【发布时间】:2010-09-11 08:09:25
【问题描述】:
好的,所以我尝试实现这个,http://ipaddressextensions.codeplex.com/。
将输出显示为:-
127.0.0.1 保留 ZZ
这个“RESERVED”和“ZZ”到底是什么?它应该显示为“印度”。
IP 地址是本地主机的。好的,但是国家名称和国家代码呢?为什么它们不能正确显示?我需要对我的代码进行哪些更改?
【问题讨论】:
标签: c# asp.net geolocation
好的,所以我尝试实现这个,http://ipaddressextensions.codeplex.com/。
将输出显示为:-
127.0.0.1 保留 ZZ
这个“RESERVED”和“ZZ”到底是什么?它应该显示为“印度”。
IP 地址是本地主机的。好的,但是国家名称和国家代码呢?为什么它们不能正确显示?我需要对我的代码进行哪些更改?
【问题讨论】:
标签: c# asp.net geolocation
127.0.0.1 是保留的 IP 地址,代表 localhost(运行代码的计算机)。这是每台运行 TCP/IP 的计算机的“有效”IP 地址。
IP 查找需要一个真实的 IP 地址才能正常工作。
关于国家代码 - 它可能是 2 个字符的国家 ISO 代码(请参阅 here),因此您需要将代码翻译成正确的国家/地区。 ZZ 不在表格中,表示没有国家/地区。
【讨论】:
ipAddress.Country();。但是,您需要使用 127.0.0.1 以外的 IP 地址才能使其正常工作。
127.0.0.1 被称为环回地址,是您的系统用来有效地与自己对话的地址。因此,没有与该 IP 地址相关联的国家/地区......它在每个系统上无处不在。
如果您将代码发布到网络上,您会得到更合适的结果,因为每个访问系统都将使用公共 IP 地址来访问您的服务器。
【讨论】:
Request.UserHostAddress 获取用户主机(请求页面的系统)的IP 地址,这可能会有所帮助。否则代码是正确的,我相信 IPAddressExtensions 包含您需要的所有数据。
当您在家进行测试时,服务器和用户是一体的(您的 PC)。所以你不能指望它显示国家,因为 IIS 的 IP 地址是一个自己的地址。
您的代码似乎没问题。您也可以使用免费的 ASP.NET 支持主机在线试用您的网站。像HelioHost、0000free等的还有很多。
关于您问题的编辑部分,如果您为每个国家/地区使用不同版本的网站,那么最好使用开关。
switch(iso3166TwoLetterCode.ToUpper())
{
case "IN" : Response.Redirect("www.mysite.in");
case "FR" : Response.Redirect("www.mysite.fr");
...
Default : Response.Redirect("www.mysite.in");
}
我认为它确实看起来更整洁。
【讨论】: