IIS 503 "Service Unavailable" 通过 HTTPS,HTTP 工作正常
IIS 503 "Service Unavailable" over HTTPS, HTTP works fine
我在 IIS 7.5 中有一个 运行ning 网站。当我通过 HTTP 访问网站时,一切正常。当我 运行 通过 HTTPS 访问站点时,我 立即 收到 HTTP 503 错误 "Service Unavailable"。站点 self-generated/self-signed.
上使用的 SSL 证书
以下是我看到的针对类似问题的解决方案不适用于这种情况:
- 用户身份已过时
- 原因:运行在 HTTP 下成功使用的应用程序池用于 HTTPS
- 应用程序池用户的密码已更改
- 原因:运行在 HTTP 下成功使用的应用程序池用于 HTTPS
- 将"Load User Profile"设为假
- 原因:这已经设置为false。同样,在 HTTP 下 运行s 成功使用的同一个应用程序池与 HTTPS
一起使用
- .NET 注册
- 原因:站点/.NET 已经 运行 通过 HTTP 成功,并且该站点似乎从未遇到 .NET 代码,因为 503 错误立即 ,即使在 IIS 重置或 web.config 修改后
- 重新启动 IIS
- 原因:我试过了
- 重新启动应用程序池
- 原因:我试过了
- 站点 > 高级设置 > 启用的协议 > http、https
- 原因:我试过了
BretB 在 this blog had the answer and linked to this Microsoft Blog 上的评论者 Chad Cothern。这种情况下的问题是端口 443 上的所有内容都已保留并且 "prevents W3SVC from obtaining the rights to listen on port 80 when it tries to start the site. Furthermore, applications that run in IIS do not need explicit reservations to run, only non-IIS applications have to reserve a URL namespace if they want to use HTTP to listen for requests."
以下是确定这是否是问题所在以及解决方法的步骤:
- 打开命令提示符
- 运行:
netsh http show urlacl url=https://+:443/
- 如果有问题,那就是你的问题。端口 443 已完全保留并阻止 IIS。
- 如果需要为 IIS 之外的应用程序 运行 保留端口 443,则需要使用应用程序路径注册它(即 http://+:443/appPath)
- 如果那里什么都没有,那么这可能不是问题所在。无需继续。
- 运行:
netsh http delete urlacl https://+:443/
- 再次尝试 运行 您的应用程序。
请注意,您还可以使用此方法检查端口 80 或任何其他端口。例如,如果保留端口 80 而未保留 443,则通过 HTTPS 的站点可以工作,而 HTTP 则不能。
当我在 Firefox 中检查控制台时,我遇到了类似的问题,通过 HTTPS、HTTP 获取“503“服务不可用””。 IIS 端的一切看起来都很好:SSL 证书、端口、站点 运行 等。我检查了调制解调器端口并意识到它需要启用端口 443 转发。只有端口 80 被转发。但是因为我使用的是 CenturyLink 品牌的调制解调器,所以路由器的远程 GUI 管理正在使用该端口。
经验教训,如果您使用的是 CenturyLink 或其他公司品牌的路由器,可能同样适用。根据此 link 中的答案 here,执行:
常见错误:“定义的端口或端口范围正在被另一个端口转发或应用程序规则使用。”
如果端口 443 已被路由器的远程 GUI 管理占用。要释放该端口:
- 登录WiFi路由器。
- 进入高级部分。
- 单击“远程管理”下左侧菜单中的“远程 GUI”。
- 启用远程 GUI 并将端口更改为 443 以外的端口(例如 4433),然后保存。
- 如果不想启用,请禁用远程 GUI,然后保存。
结论:
这解决了我在 HTTPS 上的“503“服务不可用””问题。需要启用端口 443。
我在 IIS 7.5 中有一个 运行ning 网站。当我通过 HTTP 访问网站时,一切正常。当我 运行 通过 HTTPS 访问站点时,我 立即 收到 HTTP 503 错误 "Service Unavailable"。站点 self-generated/self-signed.
上使用的 SSL 证书以下是我看到的针对类似问题的解决方案不适用于这种情况:
- 用户身份已过时
- 原因:运行在 HTTP 下成功使用的应用程序池用于 HTTPS
- 应用程序池用户的密码已更改
- 原因:运行在 HTTP 下成功使用的应用程序池用于 HTTPS
- 将"Load User Profile"设为假
- 原因:这已经设置为false。同样,在 HTTP 下 运行s 成功使用的同一个应用程序池与 HTTPS 一起使用
- .NET 注册
- 原因:站点/.NET 已经 运行 通过 HTTP 成功,并且该站点似乎从未遇到 .NET 代码,因为 503 错误立即 ,即使在 IIS 重置或 web.config 修改后
- 重新启动 IIS
- 原因:我试过了
- 重新启动应用程序池
- 原因:我试过了
- 站点 > 高级设置 > 启用的协议 > http、https
- 原因:我试过了
BretB 在 this blog had the answer and linked to this Microsoft Blog 上的评论者 Chad Cothern。这种情况下的问题是端口 443 上的所有内容都已保留并且 "prevents W3SVC from obtaining the rights to listen on port 80 when it tries to start the site. Furthermore, applications that run in IIS do not need explicit reservations to run, only non-IIS applications have to reserve a URL namespace if they want to use HTTP to listen for requests."
以下是确定这是否是问题所在以及解决方法的步骤:
- 打开命令提示符
- 运行:
netsh http show urlacl url=https://+:443/
- 如果有问题,那就是你的问题。端口 443 已完全保留并阻止 IIS。
- 如果需要为 IIS 之外的应用程序 运行 保留端口 443,则需要使用应用程序路径注册它(即 http://+:443/appPath)
- 如果那里什么都没有,那么这可能不是问题所在。无需继续。
- 运行:
netsh http delete urlacl https://+:443/
- 再次尝试 运行 您的应用程序。
请注意,您还可以使用此方法检查端口 80 或任何其他端口。例如,如果保留端口 80 而未保留 443,则通过 HTTPS 的站点可以工作,而 HTTP 则不能。
当我在 Firefox 中检查控制台时,我遇到了类似的问题,通过 HTTPS、HTTP 获取“503“服务不可用””。 IIS 端的一切看起来都很好:SSL 证书、端口、站点 运行 等。我检查了调制解调器端口并意识到它需要启用端口 443 转发。只有端口 80 被转发。但是因为我使用的是 CenturyLink 品牌的调制解调器,所以路由器的远程 GUI 管理正在使用该端口。
经验教训,如果您使用的是 CenturyLink 或其他公司品牌的路由器,可能同样适用。根据此 link 中的答案 here,执行:
常见错误:“定义的端口或端口范围正在被另一个端口转发或应用程序规则使用。”
如果端口 443 已被路由器的远程 GUI 管理占用。要释放该端口:
- 登录WiFi路由器。
- 进入高级部分。
- 单击“远程管理”下左侧菜单中的“远程 GUI”。
- 启用远程 GUI 并将端口更改为 443 以外的端口(例如 4433),然后保存。
- 如果不想启用,请禁用远程 GUI,然后保存。
结论:
这解决了我在 HTTPS 上的“503“服务不可用””问题。需要启用端口 443。