Asp.net 如何在开发机器上测试子域?abc.localhost

Asp.net 如何在开发机器上测试子域?abc.localhost,asp.net,windows,iis,Asp.net,Windows,Iis,我正在尝试开发一个包含多个子域的asp.net站点。我一般不熟悉网站,尤其是asp.net。然而,通配符子域似乎是通过dns条目和web服务器配置的组合正确设置的——这在我的开发机器上是不会发生的。因此,我在windows主机文件中手动插入条目: 127.0.0.1 localhost 127.0.0.1 abc.localhost 127.0.0.1 xyz.localhost 但是,当我试图询问Request.Url属性时,没有看到任何子域。例如,如果我点击http://abc.lo

我正在尝试开发一个包含多个子域的asp.net站点。我一般不熟悉网站,尤其是asp.net。然而,通配符子域似乎是通过dns条目和web服务器配置的组合正确设置的——这在我的开发机器上是不会发生的。因此,我在windows主机文件中手动插入条目:

127.0.0.1  localhost
127.0.0.1  abc.localhost
127.0.0.1  xyz.localhost
但是,当我试图询问Request.Url属性时,没有看到任何子域。例如,如果我点击
http://abc.localhost:1660/
在浏览器中我得到
http://localhost:1660/
来自
Request.Uri.ToString()
;abc的
abc
刚刚不见了

我不知道为什么hosts文件是这样工作的,但是有没有其他方法可以用来将子域放到我的本地web应用程序中?谢谢大家


请注意,我只使用内置的asp.net开发服务器,而不是完整的iis服务器。(本周末我无法访问完整的IIS,但我仍想知道这是否有帮助。)

我不知道标题,但我使用的一个鲜为人知的技巧是,所有127.*地址都是本地主机地址,而不仅仅是127.0.0.1。实际上,您可以在127.0.0.1端口80上运行一台服务器,在127.0.0.2端口80上运行另一个Web服务器实例。因此,您可以将127.0.0.1命名为localhost,127.0.0.2可以是abc.localhost(或abc.mydomain.com,这样您就可以根据本地Web服务器测试真实的实时URL),等等。

您可以使用“Request.Headers[“HOST”]”完整地获得子域的请求域。下面是一个简单的方法,返回当前请求的子域。这个方法还假设你在域后面有一个“.COM”,“.NET”等等,就像真实的web一样。因此,您需要将主机文件更改为包含“localhost.com”、“abc.localhost.com”等

我在搜索这件事,这里有一篇文章帮助我找到了答案:
我使用的是Windows 7、IIS 7.5、VS 2008、SQL server 2005

我能够成功地在localhost上模拟子域,并在etc/hosts中添加以下行

127.0.0.2   myapp.localhost.com
在IIS中,我设置了一个新网站,对绑定部分进行了以下修改:

Hostname = myapp.localhost.com 
IP address = 127.0.0.2
我还创建了一个新的应用程序池,但这不是必需的。您可能必须更改用于处理请求的身份验证用户。默认IIS用户出现SQL连接权限错误

IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem

我确实认为这可能是使用内置Web服务器的一个因素。我不相信这会发生在通用IIS服务器上。(如果您运行的是XP,那么您确实拥有它;您只需将您的网站设置为虚拟应用程序)。
IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem