我在IIS中部署了.net应用程序。它应该只在印度境内可以访问。如果请求来自印度以外,我们必须禁止它。
IIS有一个允许或拒绝基于IP地址范围的选项。但是,我需要知道印度的IP地址范围
请建议......
答案 0 :(得分:1)
您必须使用某些第三方API,例如IP Address Geolocation XML API,因为您无法直接从IP地址识别国家/地区。以下是example如何使用IP地址查找国家/地区。
来源的代码可以找到这个国家:
using System.Net;
using System.IO;
using System.Xml;
using System.Collections.Specialized;
public class CountryIP {
public string GetCountryByIP(string ipAddress) {
string ipResponse = IPRequestHelper("http://ipinfodb.com/ip_query_country.php?ip=", ipAddress);
XmlDocument ipInfoXML = new XmlDocument();
ipInfoXML.LoadXml(ipResponse);
XmlNodeList responseXML = ipInfoXML.GetElementsByTagName("Response");
NameValueCollection dataXML = new NameValueCollection();
dataXML.Add(responseXML.Item(0).ChildNodes(2).InnerText, responseXML.Item(0).ChildNodes(2).Value);
string xmlValue = dataXML.Keys(0);
return xmlValue;
}
public string IPRequestHelper(string url, string ipAddress) {
string checkURL = url + ipAddress;
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
StreamReader responseStream = new StreamReader(objResponse.GetResponseStream());
string responseRead = responseStream.ReadToEnd();
responseStream.Close();
responseStream.Dispose();
return responseRead;
}
}
其他一些API,例如 HostIp.Info
答案 1 :(得分:0)
你必须在你的应用程序中执行此操作,尽管它很简单。
BeginRequest
事件。然后使用像Hola(this is a referral-link for a free trial on their premium service这样的代理服务,但实际上他们的免费服务可能足以满足你的需要)来测试来自不同国家的服务。
(当然,您阻止的人也可以使用完全相同的方法来绕过您的限制。)
会有一些假阳性和假阴性,因为geo-ip数据库往往不是完美的。例如。我在爱尔兰都柏林有一家公司,他的办公室似乎就在法国巴黎郊外,因为他们使用的是法国母公司办公室的一部分,依此类推。