我有一个在 IIS 7.5 中运行的网站。当我通过 HTTP 访问该网站时,一切正常。当我通过 HTTPS 运行该网站时,我立即地收到 HTTP 503 错误“服务不可用”。网站上使用的 SSL 证书是自生成/自签名的。
以下是我见过的类似问题的解决方案do not适用于这个场景:
- User identity is outdated
- 原因:在 HTTP 下成功运行的同一个应用程序池与 HTTPS 一起使用
- App pool user's password changed
- 原因:在 HTTP 下成功运行的同一个应用程序池与 HTTPS 一起使用
- Set "Load User Profile" to false
- 原因:这已经设置为 false。同样,在 HTTP 下成功运行的同一个应用程序池也用于 HTTPS
- .NET regiis
- 原因:Site/.NET 已通过 HTTP 成功运行,并且当 503 错误返回时,该站点似乎从未命中 .NET 代码立即地,即使在 IIS 重置或 web.config 修改之后
- Restart IIS
- Restart app pool
- Site > Advanced Settings > Enabled Protocols > http, https
评论者查德·科瑟恩 (Chad Cothern)这个博客 https://blog.jayway.com/2014/10/27/configure-iis-to-use-your-self-signed-certificates-with-your-application/有答案并链接到这个微软博客 https://blogs.msdn.microsoft.com/webtopics/2010/02/17/a-not-so-common-root-cause-for-503-service-unavailable/由布雷特B.这种情况下的问题是端口 443 上的所有内容都已被保留,并且“阻止 W3SVC 在尝试启动站点时获得侦听端口 80 的权利。此外,在 IIS 中运行的应用程序不需要显式保留即可运行,只有非 IIS 应用程序如果想要使用 HTTP 侦听请求,则必须保留 URL 命名空间。”
以下是确定这是否是问题以及解决方法的步骤:
- 打开命令提示符
- Run:
netsh http show urlacl url=https://+:443/
- If something is there, then this is your problem. Port 443 is completely reserved and is blocking IIS.
- 如果需要为在 IIS 之外运行的应用程序保留端口 443,则需要使用应用程序路径(即http://+:443/appPath http://+:443/appPath)
- 如果那里什么都没有,那么这可能不是问题。无需继续。
- Run:
netsh http delete urlacl https://+:443/
- 尝试再次运行您的应用程序。
请注意,您还可以使用此方法检查端口 80 或任何其他端口。例如,如果端口 80 被保留而 443 没有被保留,那么通过 HTTPS 的站点将可以工作,而 HTTP 则不能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)