2009-08-20 18 views
11

Estoy desarrollando una aplicación ASP.NET 3.5 con Visual Studio 2008.Request.ServerVariables [ "SERVER_NAME"] es siempre localhost

Mi página por defecto tiene un código de redirección en el método Page_Load:

protected void Page_Load(object sender, EventArgs e) 
    { 

     string sname = Request.ServerVariables["SERVER_NAME"].ToLower(); 

     if (sname.ToLower().Contains("intranet")) 
     { 
     Response.Redirect("/intranet/Default.aspx"); 
     } 
     else if ((sname.ToLower().Contains("extranet"))) 
     { 
      Response.Redirect("/extranet/Default.aspx"); 
     } 
     else { 
      Response.Redirect("/web/Default.aspx"); 
     } 
    } 

He modificado mi archivo de hosts para que la intranet y la extranet redirijan a mi máquina local.

127.0.0.1  intranet 
127.0.0.1  extranet 

luego escriba la dirección URL http://extranet en mi navegador.

Sin embargo, el problema es que el valor de la variable de servidor volvió de Request.ServerVariables [ "SERVER_NAME"] es siempre "localhost" y no "extranet"

Cualquier ayuda sobre cómo obtener el valor correcto?

Muchas gracias

+1

¿Estaba tratando de asegurarse de que el nombre del servidor aquí fuera extra menor? – cchamberlain

Respuesta

12

Request.ServerVariables [ "HTTP_HOST"] obtiene el valor que estaba buscando :)

+1

Hooooly mierda, he estado buscando esta respuesta durante una hora! ¡Aclamaciones! Volvería a votar esto y te compraría una cerveza si pudiera. – SeanKendle

0

Server_Name devuelve el nombre del servidor host, el alias DNS o la dirección IP como aparecería en las URL de autorreferencia

¿Por qué no utilizar Request.URL?

+1

Mismo problema, el valor de Request.URL es - Url = {http: // localhost: 4690/default.aspx}. Gracias –

0

Sus archivos de host solo redireccionan las solicitudes a una dirección IP específica; no puede cambiar el nombre de las máquinas solicitantes editándolas.

Cuestiones relacionadas