当我尝试获取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 从不同的,完全不相关的机器访问网站时会发生同样的事情。
答案 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));