asp.Net取得真ip
3403 ワード
つのプログラマーの宝を洗う店:クリックしてリンクを開けます
つのプログラマーの宝を洗う店:クリックしてリンクを開けます
/// <summary>
/// ip
/// </summary>
/// <returns></returns>
public string GetRealIP()
{
string result = String.Empty;
// result = System.Web.HttpContext.Current.Request.ServerVariables["RemoteIp"];
result = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
//
if (!string.IsNullOrWhiteSpace(result))
{
// "." IP
if (result.IndexOf(".") == -1)
{
result = null;
}
else
{
// ",", 。 IP。
if (result.IndexOf(",") != -1)
{
result = result.Replace(" ", string.Empty).Replace("\"", string.Empty);
string[] temparyip = result.Split(",;".ToCharArray());
if (temparyip != null && temparyip.Length > 0)
{
for (int i = 0; i < temparyip.Length; i++)
{
//
if (IsIPAddress(temparyip[i]) && temparyip[i].Substring(0, 3) != "10." && temparyip[i].Substring(0, 7) != "192.168" && temparyip[i].Substring(0, 7) != "172.16.")
{
return temparyip[i];
}
}
}
}
// IP
else if (IsIPAddress(result))
{
return result;
}
// IP
else
{
result = null;
}
}
}
if (string.IsNullOrWhiteSpace(result))
{
result = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (string.IsNullOrWhiteSpace(result))
{
result = System.Web.HttpContext.Current.Request.UserHostAddress;
}
return result;
}
public bool IsIPAddress(string str)
{
if (string.IsNullOrWhiteSpace(str) || str.Length < 7 || str.Length > 15)
return false;
string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}";
//var match = Regex.Match(str, @"^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})");
Regex regex = new Regex(regformat, RegexOptions.IgnoreCase);
return regex.IsMatch(str);
}
つのプログラマーの宝を洗う店:クリックしてリンクを開けます