net form example asp c# asp.net request

c# - form - request in asp



¿Cuál es la diferencia entre Request.UserHostAddress y Request.ServerVariables["REMOTE_ADDR"]. ToString() (2)

Aquí puedo usar cualquiera de estos 2 métodos. ¿Cuáles son las diferencias y cuál debo usar?

Método 1:

string srUserIp = ""; try { srUserIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); } catch { }

Método 2:

string srUserIp = ""; try { srUserIp = Request.UserHostAddress.ToString(); } catch { }


No hay diferencia. Devuelven exactamente el mismo valor. Sin embargo, uno es compatible con IntelliSense mientras que el otro no.


Respuesta corta: los dos son idénticos.

Respuesta larga: para determinar la diferencia entre los dos, use el reflector (o el desensamblador que prefiera).

El código para la propiedad HttpRequest.UserHostAddress sigue:

public string UserHostAddress { get { if (this._wr != null) { return this._wr.GetRemoteAddress(); } return null; } }

Tenga en cuenta que devuelve _wr.GetRemoteAddress() . La variable _wr es una instancia de un objeto HttpWorkerRequest . Hay diferentes clases derivadas de HttpWorkerRequest y cuál se usa depende de si está usando IIS 6, IIS 7 o más, y algunos otros factores, pero todos los que usaría en una aplicación web tienen el mismo código para GetRemoteAddress() , a saber:

public override string GetRemoteAddress() { return this.GetServerVariable("REMOTE_ADDR"); }

Como puede ver, GetRemoteAddress() simplemente devuelve la variable de servidor REMOTE_ADDR .

En cuanto a cuál usar, sugeriría la propiedad UserHostAddress ya que no depende de "magic strings".

Programación feliz