设置
我正在使用ASP.NET MVC3构建应用程序,该应用程序使用子域,我在我的主机文件中添加了以下内容:127.0.0.1 students.localhost
。
这一切似乎都很好,当我调试时,浏览器打开localhost:{PORT}
,我可以浏览网站,我也可以打开:students.localhost:{PORT}
,网站运行正常。
如果您想知道,我使用了Maarten Balliauw's代码来实现MVC和子域中的路由要求
问题
我需要以某种方式找出用户从哪个子域访问该网站。如果我调试,我的并转到我的子域:http://students.localhost:{PORT}
Request.Url是:http://localhost:{PORT}
,由于某种原因,deubugger(或ASP.NET Development Server)没有获取students
。
请不要进入TLD震荡尝试解释子域名究竟是什么,我需要的只是http://
之后的第一个字符串。在本地和生产中,这将是我的子域名。
提前完成
更新:
我设法通过使用:Request.Headers["host"]
得到了预期的结果,找出为什么Request.Url不包含students
子字符串会很有趣。
答案 0 :(得分:2)
执行此操作的简便方法是在主机中放置完全限定的域名。如果生产站点是subdomain.domain.com,我想使用subdomain.domain.local并将其映射到127.0.0.1。
答案 1 :(得分:0)
new System.Uri(Request.RawUrl).Host
我认为这将是真正的主机名。