我目前正在测试一个网站,其中有多个子域指向同一个ASP.NET应用程序,并且路由处理如何处理每个请求。
为了测试,我在我的“主机文件”中添加了几个子域,例如: “127.0.0.1 admin.TestDomain.com”,工作正常。
然而,问题是当我调用c#中的任何函数来获取主机名/ domain / url(HttpContext.Current.Request.Url ...)时,主机url总是返回“localhost”,而不是比“TestDomain”。
为什么要以这种方式解决此名称以及我可以获取“TestDomain.com”的任何想法?
答案 0 :(得分:11)
我认为,本地操作系统使用您的“主机”文件将域映射到IP-adress(localhost)后,原始主机将丢失。 您可以尝试 RawUrl 来检索在浏览器中输入的确切网址:
HttpContext.Current.Request.RawUrl
此外,您可以尝试从用户HTTP_HOST
请求标头中获取Host:
变量,它应包含浏览器尝试请求的原始主机(不是服务器的地址或默认主机):
string requestedDomain = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
也许Getting parameters from RawUrl文章会有所帮助。