IIS 503通过HTTPS“服务不可用”,HTTP正常运行

Mic*_* B. 4 .net iis https http iis-7.5

我有一个在IIS 7.5中运行的网站。当我通过HTTP访问站点时,一切正常。通过HTTPS运行站点时,我立即收到HTTP 503错误“服务不可用”。网站上使用的SSL证书是自生成的/自签名的。

以下是我已经看到了类似的问题的解决并不适用于这种情况:

  • 用户身份已过时
    • 原因:与HTTPS一起使用在HTTP下成功运行的同一应用程序池
  • 应用程序池用户的密码已更改
    • 原因:与HTTPS一起使用在HTTP下成功运行的同一应用程序池
  • 将“加载用户个人资料”设置为false
    • 原因:这已设置为false。同样,在HTTP下成功运行的同一应用程序池与HTTPS一起使用
  • .NET注册
    • 原因:Site / .NET已经通过HTTP成功运行,并且即使IIS重置或web.config修改后,503错误也会立即返回,因此该站点似乎从未命中.NET代码。
  • 重新启动IIS
    • 原因:我尝试过
  • 重新启动应用程序池
    • 原因:我尝试过
  • 站点>高级设置>启用的协议> http,https
    • 原因:我尝试过

Mic*_* B. 11

此博客的评论者Chad Cothern找到了答案,并由BretB 链接到此Microsoft博客。在这种情况下,问题在于端口443上的所有内容均已保留,并且“阻止W3SVC在尝试启动站点时获得对端口80进行监听的权利。此外,在IIS中运行的应用程序无需显式保留即可运行,只有非IIS应用程序要使用HTTP侦听请求时,才必须保留URL命名空间。”

以下是确定这是否是问题以及如何解决的步骤:

  1. 打开命令提示符
  2. 跑: netsh http show urlacl url=https://+:443/
  3. 如果有东西,那是你的问题。端口443已完全保留,并阻止IIS。
    • 如果需要为在IIS外部运行的应用程序保留端口443,则需要使用应用程序路径(即http:// +:443 / appPath)进行注册。
    • 如果那里什么也没有,那么这可能不是问题。无需继续。
  4. 跑: netsh http delete urlacl https://+:443/
  5. 尝试再次运行您的应用程序。

请注意,您也可以使用此方法检查端口80或任何其他端口。例如,如果保留了端口80而没有保留443,则通过HTTPS的站点将起作用,而HTTP则不能。

显示以上命令和结果

  • 当我在 Web 服务器上安装 Windows Admin Center 时,我遇到了完全相同的问题。无论使用什么静态 IP,它都会拦截所有端口 443 调用,并将它们路由到 Windows 管理中心。即使卸载 Windows Admin Center 后问题仍然存在。运行命令 netsh http urlacl 后,我可以看到端口 443 已为 TerminalService 保留,运行 netsh http delete urlacl url=https://+:443/ 并执行 IISReset 后,问题得到解决 (3认同)
  • 注意:@Hogan 的评论帮助我(命令:`netsh http show urlacl`)查看所有 url 保留。我保留了一个不同的 url 变体,导致了同样的问题(例如:`https://localhost:443/`)。针对我的特定变体的解决方案:`netsh http delete urlacl url=https://localhost:443/` (2认同)
  • @mknopf 哇 - 今天我在 Windows Admin Center 上也发生了同样的事情。这悲剧!你让我不必从备份中恢复。还有其他遇到同样问题的人,命令中最后的“/”非常重要。 (2认同)