我已经在我的本地开发机器上成功设置了IIS(dev分支 - 设置为localdev.me)但是当我去设置另一个分支(hotfix - setup as localhotfix.me)时,我遇到了问题。问题是由于网站的设置方式。 url的子域用于确定要连接的数据库。所以转到host.localdev.me将连接到主机数据库。所以在IIS中,我对网站的绑定有以下设置。
Type Host Name Port IP Address
http localdev.me 80 *
http *.localdev.me 80 *
我可以使用任何子域ping localdev.me,并按预期获得环回地址。当我然后设置修补程序分支(与dev完全相同但具有以下绑定)时,我得到名称未解析错误。
Type Host Name Port IP Address
http localhotfix.me 80 *
http *.localhotfix.me 80 *
首次设置是否有效,而不是第二次?如果我告诉IIS停止我仍然可以在localdev.me上ping子域并获取环回地址,那可能更奇怪。
我总是可以通过在我的Windows主机文件中手动指定主机名来实现它,但我宁愿不这样做,因为每次添加新的子域时我都需要进入并编辑文件。
编辑:这些是我得到的具体错误。
ping localhotfix.me
Ping request could not find host localhotfix.me. Please check the name and try again.
EDIT2:我的解决方案效果很好。它需要Acrylic DNS和Microsoft Loopback Adapter的安装。我将环回适配器设置为有效的IP地址,并将DNS服务器设置为127.0.0.1,然后编辑AcrylicHosts文件以包含带有通配符的每个域的条目。一旦我完成了所有这些操作,我就可以使用* .localhotfix.me ping localhotfix.me。我相信localdev.me工作的原因是因为它是一个有效的域。该名称将解决我相信IIS能够接管的那一点。但那真的只是一个有根据的猜测。但是,为什么它适用于一个而不是另一个是有道理的。
答案 0 :(得分:1)
*.localdev.me
在没有主机文件的情况下工作的原因是,只要该域名不是127.0.0.1
或localdev.me
,该域的公有DNS就会解析为www.localdev.me
。您可以在主机文件为空时使用nslookup *.localdev.me
(用除www
之外的任何内容替换星号)来检查此项。另一方面,*.localhotfix.me
根本没有在公共DNS中注册,这就是为什么你需要一个主机文件条目。