我的代码:
protected void Page_Load(object sender, EventArgs e)
{
String userHost = Request.UserHostName
}
这是获取IP地址好的,但现在我想知道访问者所在的国家/地区并使用该国家/地区名称来相应地将访问者重定向到某个网页。
我遇到过这个图书馆,但不知道如何在项目中使用它。其实我这样做,但我不确定,所以我在问。
http://ipaddressextensions.codeplex.com/
当我从上面下载时,ZIP文件夹有一个DLL文件和一个XML文件。现在,我对这两个怎么办?就像在项目中包含一样。然后我在代码文件中键入什么内容?
如下所示。
if (countryName=="France")
{
response.redirect("www.mysite.fr")
}
else
if(countryName=="India")
{
response.redirect("www.mysite.in")
}
依旧......
我该如何解决?我还需要为所有国家/地区键入多个if
块。如何缩短此代码?
答案 0 :(得分:3)
要缩短代码,请将所有国家/地区放入字典中。
Dictionary<string,string> dict;
public void Init(){
dict = new Dictionary<string,string>();
dict["India"] = "www.mysite.in";
dict["France"] = "www.mysite.fr";
}
public string GetPage(string country){
string result = dict["Default"];
if(dict.ContainsKey(theKey)){
result = dict[theKey];
}
return result;
}
只需添加引用,然后添加“using statement”,API即可使用。
您甚至可以更改以上内容以接收IP地址。
首先将引用和下面的using
添加到您的代码中。
using WorldDomination.Net;
public string GetPage(string ipAddress){
string result = null;
IPAddress ipAddress;
if (IPAddress.TryParse(userHostIpAddress, out ipAddress))
{
string fullNameKey= ipAddress.Country();
//Or you could use two letter code
//string twoLetterKey = ipAddress.Iso3166TwoLetterCode();
if(dict.ContainsKey(theKey)){
result = dict[fullNameKey];
}
}
else
{
result = dict["Default"];
}
return result;
}
答案 1 :(得分:1)
您需要将下载的库(dll)的引用添加到项目中。有关添加引用的详细信息,请参阅http://msdn.microsoft.com/en-us/library/7314433t%28v=VS.90%29.aspx。
“您在代码文件中键入的内容”将完全取决于库本身。如果您不确定如何实现库的功能,我建议您查看CodePlex页面上托管的source code repository中包含的测试项目。它应该显示您需要调用的方法。运气好的话,类和方法结构都是不言自明的。
如果您不想使用if() { } else if() { }
阻止,则可以选择使用switch statement。
switch(countryName) {
case "India":
// do something
break;
case "France":
// do something
break;
case "Japan":
// do something
break;
case "Germany":
// do something
break;
default:
// do something
break;
}
答案 2 :(得分:0)
http://ipaddressextensions.codeplex.com/网站提供了查找国家/地区的示例代码。找到该国家/地区后,根据国家/地区将其与子域名进行比较,然后重定向。 `使用System.Net; 使用WorldDomination.Net;
string userHostIpAddress = "203.1.2.3";
IPAddress ipAddress;
if (IPAddress.TryParse(userHostIpAddress, out ipAddress))
{
string country = ipAddress.Country(); // return value: UNITED STATES
string iso3166TwoLetterCode = ipAddress.Iso3166TwoLetterCode(); //return value: US
} `