各位 Stackoverflow 用户,您好!
这是发生在我身上的一些有趣的事情 - 也许你可以解释为什么?
昨天工作日过半时,我安装的 IIS Express 停止工作了。
一开始我以为是我正在做的ASP.NET项目的问题,只是挂起而无法启动,因为页面一直挂着直到超时。然后我尝试了一些其他项目,也设置为在 localhost:8080 上运行 - 他们也不会加载 - 即使是纯 HTML 项目。
现在,当我说它们不会加载时;我的意思是根本没有事件。该页面会在 chrome 中“加载”很长时间,并且 IISExpress 控制台不会注册任何 GET 请求,直到最终 chrome 中的选项卡会显示超时错误。
今天早上,我(在一些帮助下)想出了一些办法 - 由于某种原因,当我 ping localhost
时,ipv6 地址 ::1:
将返回,而不是 ipv4地址 127.0.0.1
- 我之前没有注意到此行为,并且我没有更改任何网络设置。
我编辑了 HOST 文件,并添加了 127.0.0.1 localhost
条目,以强制 ping localhost
返回 ipv4 地址。这有效,当我再次尝试将 IIS Express 绑定(bind)到 localhost:8080 时,它也有效。
我的问题是; 到底是什么?!?!
我不知道为什么会发生这种情况。我知道我已经通过编辑 HOST 文件成功解决了个别问题,但有谁知道为什么会发生这种情况?
知道为什么 ping localhost
会突然开始返回 ipv6 地址吗?知道为什么 IIS Express 不能与 ipv6 一起工作吗? (我假设 IIS 引擎现在已经内置了)。
出于好奇,我想了解发生了什么,以避免出现任何进一步的问题。
预先感谢您提供任何信息,
菲尔
最佳答案
- 打开管理 cmd 窗口,然后使用您绑定(bind)到的端口执行此命令:
netsh http add urlacl url="http://[::1]:8080/" user=everyone
。这告诉您的系统绑定(bind)到::1
很酷 - 打开
%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
,找到您站点的部分,然后添加 IPv6 绑定(bind):<binding protocol="http" bindingInformation="[::1]:8080:*" />
示例:
<site name="WebSite1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\ryan.versaw\Documents\WebSite1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="[::1]:8080:*" />
</bindings>
</site>
关于ipv6 - IIS Express 无法在具有 ipv6 的本地主机上启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11097936/