主机文件主机名未在c#ASP.NET MVC中返回

时间:2012-03-29 23:08:39

标签: asp.net asp.net-mvc dns hosts

我目前正在测试一个网站,其中有多个子域指向同一个ASP.NET应用程序,并且路由处理如何处理每个请求。

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

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

为什么要以这种方式解决此名称以及我可以获取“TestDomain.com”的任何想法?

1 个答案:

答案 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文章会有所帮助。