在发布此之前,我已经阅读了多个问题(和答案),但我似乎无法以某种方式得到它。如何使用 REMOTE_ADDR 计算 IP 范围?例如,我授予了对以下范围的独占访问权限:197.168.178.1 - 197.168.178.10 当我使用 197.168.178.6 访问该站点时,我想获得访问权限。我该如何管理?
到目前为止,我得到的是 IpRange 类的列表——这些 IP 地址在数据库中指定,可以更改为任何范围。ID 用于识别访问站点的范围。
public class IpRange
{
public int ID { get; set; }
public System.Net.IPAddress RangeStart { get; set; }
public System.Net.IPAddress RangeEnd { get; set; }
}
我尝试Request.ServerVariables["REMOTE_ADDR"]
使用下一个方法将传入的 IP 地址 () 与此范围匹配;
private static int MatchAddress(System.Net.IPAddress IP, List<IpRange> range)
{
int Value = -1;
foreach (IpRange item in range)
{
if (item.RangeStart.Address >= IP.Address && IP.Address <= item.RangeEnd.Address)
{
Value = item.ID;
break;
}
}
return Value;
}
方法 Address 已过时,很可能返回与我认为的完全不同的东西;根据我应该使用的警告IPAddress.Equals
,但是该方法只能比较两个地址以查看是否相同,我想知道它是否在范围内定义。
有什么方法可以匹配这个(或者我应该使用另一个组件来做到这一点)?
PS我的网络知识远低于标准,我知道,所以这可能是一个非常愚蠢的问题,但我迷失了atm。