Obtener la dirección IP del servidor en ASP.NET?

¿Cómo obtengo la dirección IP del servidor que llama a mi página ASP.NET? He visto cosas sobre un objeto Response, pero soy muy nuevo en c #. Gracias una tonelada.

Esto debería funcionar:

//this gets the ip address of the server pc public string GetIPAddress() { IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); // `Dns.Resolve()` method is deprecated. IPAddress ipAddress = ipHostInfo.AddressList[0]; return ipAddress.ToString(); } 

http://wec-library.blogspot.com/2008/03/gets-ip-address-of-server-pc-using-c.html

O

  //while this gets the ip address of the visitor making the call HttpContext.Current.Request.UserHostAddress; 

http://www.geekpedia.com/KB32_How-do-I-get-the-visitors-IP-address.html

Request.ServerVariables["LOCAL_ADDR"];

Esto le da a la IP la solicitud de los servidores multi-homed

Lo anterior es lento ya que requiere una llamada DNS (y obviamente no funcionará si no hay uno disponible). Puede usar el siguiente código para obtener un mapa de las direcciones IPV4 locales de la PC actual con su máscara de subred correspondiente:

 public static Dictionary GetAllNetworkInterfaceIpv4Addresses() { var map = new Dictionary(); foreach (var ni in NetworkInterface.GetAllNetworkInterfaces()) { foreach (var uipi in ni.GetIPProperties().UnicastAddresses) { if (uipi.Address.AddressFamily != AddressFamily.InterNetwork) continue; if (uipi.IPv4Mask == null) continue; //ignore 127.0.0.1 map[uipi.Address] = uipi.IPv4Mask; } } return map; } 

advertencia: esto aún no está implementado en Mono

  //this gets the ip address of the server pc public string GetIPAddress() { string strHostName = System.Net.Dns.GetHostName(); //IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); <-- Obsolete IPHostEntry ipHostInfo = Dns.GetHostEntry(strHostName); IPAddress ipAddress = ipHostInfo.AddressList[0]; return ipAddress.ToString(); } 

Esto funcionará para IPv4:

 public static string GetServerIP() { IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress address in ipHostInfo.AddressList) { if (address.AddressFamily == AddressFamily.InterNetwork) return address.ToString(); } return string.Empty; }