我的网络适配器使用三个 IP4 地址:
- A
- b
- C
IIS 运行两个站点:A、B,绑定是
- 答:80
- B> B:80
- B> B:443
我将 IIS 配置为监听 a 和 b,如下所示:
- netsh http 添加 iplisten ipaddress=a:80
- netsh http 添加 iplisten ipaddress=b:80
- netsh http 添加 iplisten ipaddress=b:443
命令 netsh http show iplisten 显示:
- A
- b
Google Go Webservice 在 IP4 地址上运行:
- C
情况:此配置在 Windows 2008 R2 上运行良好。在 Windows 2012 R2 上,它最初似乎可以运行,但重新启动服务器后,Google Go Webservice 正在运行,但站点 A 和 B 已停止。但是我可以手动启动它们,并且所有三个站点都可以再次运行。
方法 1:站点 A 和 B 正在运行。现在我禁用 Google Go Webservice 并重新启动服务。但站点 A 和 B仍然停止重启后。
方法 2:(Go Webservice 仍处于禁用状态)我现在为 IIS 添加全局 IP 地址 0.0.0.0 以进行监听。因此 netssh http show iplisten 显示:0.0.0.0, a, b。重启后,站点 A 和 B 仍在运行。但是,监听 0.0.0.0 确实会阻止 Google Go Webservice 运行,因为它的 IP 和端口是现已被封锁由 IIS 提供。
问题:为什么 IIS 需要 0.0.0.0 IP 地址来启动站点?在我看来,这似乎是 Windows Server 2012 R2 中的一个缺陷。在 IIS8.5 中,我还发现了其他缺陷,因此我并不感到惊讶 - 例如,您不能再在标准网站的命名中使用字符 ?,这对我们的一些 ISAPI 模块来说是个问题(您可以编写 xy.dll,但不能编写 xy.dll?start)。我现在该怎么做才能让这三个站点同时运行?感谢您的支持。
答案1
系统启动后,用批处理脚本启动它们就足够了吗?也许这不是最优雅的解决方案,但它应该可行。