Hello 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再次绑定到localhost:8080它也工作。
我的问题是; 地球上的什么?!?!
我不知道为什么会这样。我知道我已经设法通过编辑我的HOST文件来修复个别问题,但是有人知道为什么地球上会发生这种情况吗?
知道为什么ping localhost
突然开始返回ipv6地址?任何想法为什么IIS Express不能与ipv6一起使用? (我假设IIS引擎现在已经完成了)。
我想了解发生了什么事以避免任何进一步的问题,以及好奇心。
提前感谢任何信息,
菲尔答案 0 :(得分:3)
netsh http add urlacl url="http://[::1]:8080/" user=everyone
的端口执行此操作。这告诉您的系统绑定到::1
%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
,找到您网站的部分,然后添加IPv6绑定: <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>
答案 1 :(得分:0)
只要在您的系统上启用了IPv6,:: 1和127.0.0.0都是“localhost”的有效地址。系统返回两者中的哪一个并用于例如ping或多或少是不确定的,除非程序专门请求IPv4或IPv6地址 - 并且由于Windows的ping可以处理,它可能没有这样做。
对于IIS,像这样的答案表明这种行为是故意的,你需要单独启用绑定到IPv6地址:https://serverfault.com/questions/123796/get-iis-7-5-to-listen-on-ipv6