我已在本地开发计算机上成功设置 IIS(开发分支 - 设置为 localdev.me),但是当我去设置另一个分支(修补程序 - 设置为 localhotfix.me)时,我遇到了问题。这些问题是由于网站的设置方式造成的。 url 的子域用于确定要连接到哪个数据库。因此,访问 host.localdev.me 将连接到主机数据库。因此,在 IIS 中,我对站点的绑定(bind)进行了以下设置。
Type Host Name Port IP Address
http localdev.me 80 *
http *.localdev.me 80 *
我可以使用任何子域 ping localdev.me,并按预期获得环回地址。然后,当我设置修补程序分支(与开发完全相同,但具有以下绑定(bind))时,我收到名称未解析错误。
Type Host Name Port IP Address
http localhotfix.me 80 *
http *.localhotfix.me 80 *
第一个设置有效而第二个设置无效是否有原因?更奇怪的是,如果我告诉 IIS 停止,我仍然可以 ping localdev.me 上的子域并获取环回地址。
我总是可以通过在 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 文件以包含带有通配符的每个域的条目。完成所有这些操作后,我就能够 ping localhotfix.me 和 *.localhotfix.me。我相信 localdev.me 工作的原因是因为它是一个有效的域。名称将会解析,此时我相信 IIS 能够接管。但这实际上只是一个有根据的猜测。但为什么它对其中一个有效而不对另一个有效,这是有道理的。
最佳答案
原因*.localdev.me
无需主机文件即可工作,因为该域的公共(public) DNS 解析为 127.0.0.1
只要不是 localdev.me
或www.localdev.me
。您可以使用 nslookup *.localdev.me
检查这一点(将星号替换为 www
之外的任何内容),而您的主机文件为空。另一方面,*.localhotfix.me
根本没有在公共(public) DNS 中注册,这就是为什么您需要这些主机文件条目。
关于asp.net - IIS 10 站点绑定(bind)通配符开发机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830887/