我正在尝试开发一asp.net有多个子域的www.example.com站点。我对网站总体上还是新手,尤其是ASP.NET。然而,通配符子域似乎是通过dns条目和web服务器配置的组合正确设置的--这在我的开发机器上是不会发生的。因此,我手动在我的windowshosts文件中插入条目:
127.0.0.1 localhost
127.0.0.1 abc.localhost
127.0.0.1 xyz.localhost
然而,当我尝试查询Request.Url属性时,没有看到子域。例如,如果我在浏览器中点击http://abc.localhost:1660/
,我会从Request.Uri.ToString()
得到http://localhost:1660/
;abc
就这么没了?!
我不知道为什么主机文件是这样工作的,但是有没有其他的方法可以让我把子域放到我的本地web应用程序中呢?谢谢大家。
请注意,我只使用了内置的asp.net开发服务器,而不是完整的iis服务器(这个周末我无法访问完整的IIS,但我仍然想知道这是否有帮助)。
3条答案
按热度按时间hgc7kmma1#
不知道标头是什么,但我使用过一个鲜为人知的技巧,即所有127.* 地址都是本地主机地址,而不仅仅是127.0.0.1。实际上,您可以运行一个侦听127.0.0.1端口80的服务器,以及另一个侦听www.example.com端口80的Web服务器示例127.0.0.2。因此,您可以将www.example.com命名127.0.0.1localhost,127.0.0.2可以是abc.localhost(或abc.mydomain.com,以便您可以针对本地Web服务器测试真实的的URL)等。
q3qa4bjr2#
我正在使用Windows 7,IIS 7.5,VS 2008,SQL Server 2005
我可以通过在etc/hosts中放置以下代码行成功地在localhost上模拟子域
并且,在IIS中,我建立了一个新网站,对bindings部分做了如下修改:
我还创建了一个新的应用程序池,但这不是必需的。您可能必须更改用于处理请求的身份验证用户。我与默认IIS用户发生SQL连接权限错误。
w46czmvw3#
您可以通过使用“Request.Headers[“HOST”]"来获得完整的子域。下面是一个返回当前请求的子域的简单方法。该方法还假设您在域后面有一个“.COM”、“.NET”等,就像真实的的Web一样。因此,您需要更改您的HOSTS文件以包括“localhost.com“、“abc.localhost.com“等。
我正在搜索这件事,这里有一篇文章,这是什么实际上帮助我弄清楚了:https://web.archive.org/web/20090813174916/http://blogs.securancy.com/post/ASPNET-MVC-Subdomain-Routing.aspx