Nuestro servidor ASP.NET aloja una gran cantidad de información útil que, en determinado momento, puede salvarnos de situaciones complejas. Este conjunto de variables puede consultarse mediante el objeto Request.ServerVariables[<NombreVariable>]. Así, si realizamos la siguiente consulta:
string navegador = Request.ServerVariable["HTTP_USER_AGENT"];
La variable navegador alojará, como intuitivamente podremos imaginar, el navegador que está utilizando el cliente que se conecta a nuestro servidor, dato utilizado, por ejemplo, para estadísticas. En nuestro caso, el dato devuelto será el siguiente:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Hay cantidad de variables de servidor cuya consulta puede hacernos la vida más fácil. Como ejemplo, indicaremos algunas de ellas:
VARIABLE | SIGNIFICADO | EJEMPLO |
---|---|---|
SERVER_PROTOCOL | Protocolo de conexión | HTTP/1.1 |
REMOTE_ADDR | Dirección IP Remota | 80.24.53.11 |
LOCAL_ADDR | Direccion IP Local | 127.0.0.1 |
PATH_INFO | Ruta de la aplicación | /MiAplicacion/Pagina.aspx |
URL | URL de la página | /MiAplicacion/Pagina.aspx |
AUTH_TYPE | Tipo de autenticación | Forms |
SERVER_PORT | Puerto HTTP | 80 |
HTTP_USER_AGENT | Navegador del usuario | Mozilla/4.0 (compatible; MSIE 8.0;… |
HTTP_HOST | Nombre del host | MyMachine |
SERVER_NAME | Nombre del servidor | MyMachine |
SERVER_SOFTWARE | Servidor web | Microsoft-IIS/6.0 |
APPL_PHYSICAL_PATH | Ruta física de la aplicación | C:\Inetpub\wwwroot\MiAplicacion\ |
HTTPS | ¿Usa SSL? | off |
AUTH_USER | Usuario autenticado | administrador |
REMOTE_USER | Usuario remoto | administrador |
HTTP_CONNECTION | Tipo de conexión HTTP | Keep alive |
HTTP_ACCEPT_LANGUAGE | Idioma | es |
Existen más variables de servidor, y basta con recorrer con un bucle su contenido para echarle un vistazo a todas:
Hashtable hs = new Hashtable(); foreach (string s in Request.ServerVariables.AllKeys) { hs.Add(s, Request.ServerVariables[s]); }