8

我目前正在测试一个站点,该站点具有多个指向同一个 ASP.NET 应用程序的子域,并且路由处理每个请求的处理方式。

为了测试,我在我的“主机文件”中添加了几个子域,例如“127.0.0.1 admin.TestDomain.com”,它工作正常。

但是,问题是当我在 c# 中调用任何函数来获取主机名/域/url (HttpContext.Current.Request.Url...) 时,主机 url 总是以“localhost”返回,而不是“TestDomain” ”。

任何想法为什么以这种方式解析此名称,以及我在哪里可以获得“TestDomain.com”?

4

1 回答 1

11

我认为,在本地操作系统使用您的“主机”文件将域映射到 IP 地址(本地主机)后,原始主机会丢失。您可以尝试使用 RawUrl来检索在浏览器中键入的确切 URL:

HttpContext.Current.Request.RawUrl  

您也可以尝试HTTP_HOST从用户请求标头中获取变量Host:,它应该包含浏览器尝试请求的原始主机(不是服务器的地址或默认主机):

string requestedDomain = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];

也许从 RawUrl文章中获取参数会有所帮助。

于 2012-04-26T13:59:19.177 回答