获得域名的根

时间:2015-10-20 07:50:37

标签: c# asp.net

当我尝试获取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,Port = 80和Host =" 127.0.0.1"。为什么我没有得到" subdomain.domain.com"对于主机或Request.Url.Authority在实时网页上?

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

2 个答案:

答案 0 :(得分:1)

您的代码没有问题,看起来网站也被访问了 通过visual studio(IIS express)或客户端(浏览器)以及web应用程序在同一系统中运行。

答案 1 :(得分: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));