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

Pau*_*haw 8 asp.net dns asp.net-mvc hosts

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

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

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

任何想法为什么这个名字以这种方式解决,以及我可以抓住"TestDomain.com"?

Ser*_* S. 11

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

HttpContext.Current.Request.RawUrl  
Run Code Online (Sandbox Code Playgroud)

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

string requestedDomain = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
Run Code Online (Sandbox Code Playgroud)

也许从RawUrl文章中获取参数会很有帮助.

  • 完善.原始URL只给了我干(例如"/ home"),但ServerVariables ["HTTP_HOST"]为我排序.非常感谢!我不打算深入研究这个,但很高兴提供信息/进行进一步测试,如果有兴趣. (3认同)