2009-08-20 57 views
11

我開發一個ASP.NET 3.5應用程序使用Visual Studio 2008Request.ServerVariables [ 「SERVER_NAME」]總是本地主機

我的默認頁在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"); 
     } 
    } 

我修改了我的主機文件,以便Intranet和Extranet重定向到本地計算機。

127.0.0.1  intranet 
127.0.0.1  extranet 

然後我在瀏覽器中輸入網址http://extranet

然而,問題是,服務器變量值從Request.ServerVariables返回[「SERVER_NAME」]始終是「本地主機」,而不是「外部網」

如何得到正確的值任何幫助嗎?

非常感謝

+1

您是否試圖確保這裏的服務器名稱是額外更小的? – cchamberlain 2015-08-23 18:24:01

回答

12

Request.ServerVariables [「HTTP_HOST」]得到我一直在尋找:)

+1

Hooooly廢話,我一直在尋找這個答案一個小時!乾杯!我會再次投票,如果可以的話,給你買一瓶啤酒。 – SeanKendle 2014-05-19 15:30:41

0

Server_Name返回服務器的主機名,DNS別名或IP地址,因爲它會出現在自引用的URL

你爲什麼不使用Request.URL

+1

同樣的問題,來自Request.URL的值是 - Url = {http:// localhost:4690/default.aspx}。謝謝 – 2009-08-20 11:57:48

0

您的主機文件僅將請求重定向到特定的IP地址 - 您無法通過編輯來更改請求的機器名稱。