2009-08-20 9 views
11

Zajmuję się tworzeniem aplikacji ASP.NET 3.5 z Visual Studio 2008.Request.ServerVariables [ "SERVER_NAME"] jest zawsze localhost

Moja domyślna strona ma jakiś kod przekierowania w metodzie 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"); 
     } 
    } 

Zmodyfikowałem plik hosts tak, aby intranet i ekstranet przekierowywały na mój komputer lokalny.

127.0.0.1  intranet 
127.0.0.1  extranet 

Następnie wpisuję adres URL http://extranet w mojej przeglądarce.

Jednak problemem jest to, że wartość zmiennej serwera wrócił z Request.ServerVariables [ „SERVER_NAME”] jest zawsze „localhost”, a nie „extranet”

Każda pomoc, w jaki sposób uzyskać właściwą wartość?

Dziękujemy

+1

Czy próbowałeś się upewnić, że nazwa serwera tutaj ma dodatkowe małe litery? – cchamberlain

Odpowiedz

12

Request.ServerVariables [ „HTTP_HOST”] Pobiera wartość szukałem :)

+1

gówno Hooooly, szukam tej odpowiedzi przez godzinę! Twoje zdrowie! Znowu zagłosowałbym na to i kupiłbym ci piwo, gdybym mógł. – SeanKendle

0

Server_Name zwraca nazwę serwera hosta, alias DNS lub adres IP, jak wydaje się na własny przedstawieniu URL

Dlaczego nie używacie Request.URL?

+1

Ten sam problem, wartość z pola Request.URL to - Url = {http: // localhost: 4690/default.aspx}. Dzięki –

0

Pliki hosta przekierowują żądania tylko na określony adres IP - nie można zmienić nazwy żądanych komputerów, edytując je.

Powiązane problemy