public static string IPCliente(TipoIP ipTipo) { try { //return HttpContext.Current.Request.UserHostName; if (ipTipo == TipoIP.V4) { string IP4Address = String.Empty; foreach (IPAddress IPA in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress)) { if (IPA.AddressFamily.ToString() == "InterNetwork") { IP4Address = IPA.ToString(); break; } } if (IP4Address != String.Empty) { return(IP4Address); } foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName())) { if (IPA.AddressFamily.ToString() == "InterNetwork") { IP4Address = IPA.ToString(); break; } } return(IP4Address); } if (ipTipo == TipoIP.V6) { System.Web.HttpContext context = System.Web.HttpContext.Current; string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (!string.IsNullOrEmpty(ipAddress)) { string[] addresses = ipAddress.Split(','); if (addresses.Length != 0) { return(addresses[0]); } } return(context.Request.ServerVariables["REMOTE_ADDR"]); } return(""); } catch { return(""); } }
public static bool ValidarIP(string ip, TipoIP tipoIP) { // try { if (Validaciones.EsNulaVacia(ip)) { return(false); } IPAddress dirip; if (!IPAddress.TryParse(ip, out dirip)) { return(false); } switch (tipoIP) { case TipoIP.V4: StringBuilder expresionBuilder = new StringBuilder(); expresionBuilder.AppendFormat(@"^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$"); string expresion = expresionBuilder.ToString(); if (Regex.IsMatch(ip, expresion)) { return(dirip.AddressFamily == AddressFamily.InterNetwork); } else { return(false); } case TipoIP.V6: return(dirip.AddressFamily == AddressFamily.InterNetworkV6); default: return(false); } } catch { return(false); } }