1.获取真实IP地址:(如果本地localhost测试获取的是本地回环地址)
/// <summary> /// 获取IP地址 /// </summary> /// <returns></returns> public static string GetIPAddress() { string result = String.Empty; result = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; // 如果使用代理,获取真实IP if (result != null && result.IndexOf(".") == -1) //没有“.”肯定是非IPv4格式 result = null; else if (result != null) { if (result.IndexOf(",") != -1) { //有“,”,估计多个代理。取第一个不是内网的IP。 result = result.Replace(" ", "").Replace("‘", ""); string[] temparyip = result.Split(",;".ToCharArray()); 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]; //找到不是内网的地址 } } } else if (IsIPAddress(result)) //代理即是IP格式 return result; else result = null; //代理中的内容 非IP,取IP } if (null == result || result == String.Empty) result = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; if (result == null || result == String.Empty) result = System.Web.HttpContext.Current.Request.UserHostAddress; return result; }
2.判断是否是IP地址格式:
/// <summary> /// 判断是否是IP地址格式 0.0.0.0 /// </summary> /// <param name="str1">待判断的IP地址</param> /// <returns>true or false</returns> private static bool IsIPAddress(string str1) { if (str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15) return false; string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$"; Regex regex = new Regex(regformat, RegexOptions.IgnoreCase); return regex.IsMatch(str1); }
3.获取IP所在省市名称:如,安徽合肥市
/// <summary> /// 获取IP所在省市 /// </summary> /// <param name="Ip">IP地址</param> /// <returns></returns> public static string GetProviceCityByIP(string ip) { WebRequest request = WebRequest.Create("http://www.ip138.com/ips138.asp?ip=" + ip); WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312")); string read = reader.ReadToEnd(); if (string.IsNullOrEmpty(read)) { return "默认城市"; } Regex regex = new Regex("<td align=\"center\"><ul class=\"ul1\"><li>本站主数据:(?<title>.*?)</li>"); if (regex.IsMatch(read)) { read = regex.Match(read).Groups["title"].Value; } string[] result = read.Split(‘ ‘); if (result.Length > 0) { return result[0]; } return string.Empty; }
4.写日志到txt文件:
//写入日志 public static void WriteLog(string text) { StreamWriter sw = new StreamWriter(HttpContext.Current.Server.MapPath(".") + "\\log.txt", true); //服务器根目录下log写入日志 sw.WriteLine(text); sw.Close(); }
原文:http://www.cnblogs.com/zxx193/p/4942705.html