ipv6 - IIS Express 无法在具有 ipv6 的本地主机上启动

标签 ipv6 iis-express ipv4

各位 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/

相关文章:

java - 在 Windows 上绑定(bind) IPv6 服务器套接字

c# - 从 Dns.GetHostEntry() 获取 IPv4 地址

Python:获取 IPv6 套接字以接收发往子网路由器任播地址的数据包

c# - ASP.NET Web 应用程序找不到我的 XML 文件,说它不在 IIS Express 文件夹中

asp.net-core - Microsoft.AspNetCore.All 2.1.1

c# - dns.gethostbyname()

c - IPv6 的 getaddrinfo() 没有意义

c# - 如何在 ASP.NET Web Api 中配置 gzip 压缩响应?

networking - 互联网上最大的安全 UDP 数据包大小是多少

C:存储和读取ipv4/ipv6地址和端口