於安全考慮
由此我們了解到
TIP:
int取值范圍
uint取值范圍
long取值范圍
的確該讓它
那麼只有自己動手了
/// <summary>
/// 將IP地址轉為整數形式
/// </summary>
/// <returns>整數</returns>
public static long 轉換為整數(this IPAddress ip)
{
int x =
long o =
foreach (byte f in ip
{
o += (long)f <<
}
return o;
}
你可以這樣使用這個擴展方法
IPAddress
這裡還有一個用於逆轉換的擴
展方法
/// <summary>
/// 將整數轉為IP地址
/// </summary>
/// <returns>IP地址</returns>
public static IPAddress 轉換為IP地址(this long l)
{
var b = new byte[
for (int i =
{
b[
}
return new IPAddress(b);
}
這樣我們就可以通過計算得到正確並有意義的整數了
OK
這樣設計後
在驗證時只需要獲取所有未過期的條目
以往通過字符串存儲和驗證的方案中
而我們這樣設計就可以輕松實現
下面為數據表生成EDM模型
添加IP屏蔽記錄的代碼
/// <summary>
/// 添加一個新的IP屏蔽區段
/// </summary>
/// <param name=
/// <param name=
/// <param name=
/// <returns>ID號</returns>
public static Guid 添加(string IP區段起始值
{
var id = Guid
var sip = IPAddress
var eip = IPAddress
using (var c = new SiteMainEntities())
{
//檢測是否已存在相同的IP屏蔽記錄
var a = c
//如果存在則更新其過期時間
if (a
{
var l = a
if (l
}
//不存在則正常添加一個新的屏蔽記錄
else c
c
}
return id;
}
檢測指定IP地址是否
被屏蔽的代碼
/// <summary>
/// 檢測指定IP地址是否已受到屏蔽
/// </summary>
/// <param name=
/// <returns>是否屬於已屏蔽的IP</returns>
public static bool 檢測是否被屏蔽(string IP地址)
{
var ip = IPAddress
using (var c = new SiteMainEntities())
{
return c
}
}
這種方案比起以往的字符串驗證方案來說優雅了許多
From:http://tw.wingwit.com/Article/program/net/201311/12978.html