IIS Express无法使用ipv6在localhost上启动

时间:2012-06-19 09:14:31

标签: ipv6 iis-express ipv4

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引擎现在已经完成了)。

我想了解发生了什么事以避免任何进一步的问题,以及好奇心。

提前感谢任何信息,

菲尔

2 个答案:

答案 0 :(得分:3)

  • 打开一个admin cmd窗口,然后使用您绑定到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