2009-08-20 55 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地址 - 您无法通过编辑来更改请求的机器名称。