2015-10-20 131 views
0

当我尝试获取http://subdomain.domain.com域的主机时,结果始终为“127.0.0.1”。我试了几个变化,例如获取域的根目录

rootUrl = string.Format("{0}://{1}{2}{3}", 
         context.Request.Url.Scheme, 
         context.Request.Url.Host, 
         context.Request.Url.Port == 80 ? "" 
                 : ":" + context.Request.Url.Port, 
         context.Request.ApplicationPath); 

我还试图从this SO page其他的建议,但结果仍然IsLocal = TRUE,端口= 80和主机=“127.0.0.1”。为什么在实时网页上无法获得Host或Request.Url.Authority的“subdomain.domain.com”?

编辑 从不同的,完全不相关的机器访问网站时会发生同样的情况。

回答

0

这个工作对我来说:

在ASP.NET:

  var ServerBaseUrl = Request.Url.Scheme + "://" 
        + Request.Url.Authority 
        + (Request.Url.IsDefaultPort ? string.Empty : ":" + Request.Url.Port) 
        + Request.ApplicationPath.TrimEnd('/'); 

在的WebAPI:

  var ServerBaseURL = Request.RequestUri.Scheme + "://" 
          + Request.RequestUri.Authority 
          + (Request.RequestUri.IsDefaultPort ? string.Empty : ":" + Request.RequestUri.Port) 
          + (string.IsNullOrWhiteSpace(Request.GetRequestContext().VirtualPathRoot.Trim('/')) 
           ? string.Empty 
           : (Request.GetRequestContext().VirtualPathRoot)); 
+0

谢谢,但Request.RequestUri.Authority也返回“127.0.0.1”:( – devlock

+0

)您是否在本站点的IIS设置上绑定了“*”(所有域),并通过服务器访问它IIS正在运行?你在浏览器中输入了什么URL? – GeorgDangl

+0

没有特别的绑定,它只是从我的本地机器访问某个subdomain.domain.com,由一个主要提供商托管;我希望显示网页的根目录在浏览器中返回 – devlock

1

你的代码没有问题,貌似网站要么访问
通过visual studio(IIS express)或客户端(浏览器)以及web应用程序在同一系统中运行。

+0

该网站通过浏览器访问,而不是通过VS;没有竞争的应用程序在我的机器上同时运行 – devlock

+0

您如何访问您的网站?http://subdomain.domain.com或http:// localhost/VirtualDirectoryName?如果是localhost,则行为是预期的。 –

+0

它只是“subdomain.domain.com”,没有localhos大约在任何地方;正如在上面的编辑中提到的,从不同的机器访问网站也会发生同样的事情 – devlock