【问题标题】:ASP.NET 4.7 on Server 2019 - HTTPS giving HTTP 503 - Service Unavailable (Works on Http)Server 2019 上的 ASP.NET 4.7 - HTTPS 提供 HTTP 503 - 服务不可用(适用于 Http)
【发布时间】:2020-01-12 12:39:18
【问题描述】:

我们正在尝试在 Server 2019 上测试我们的网络应用,以了解它们将如何工作。我们的 Team City 部署工作正常,现在我正试图弄清楚 Server 2019 发生了什么。

https:// 上的任何页面都会给我错误:

来源:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Service Unavailable</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Service Unavailable</h2>
<hr><p>HTTP Error 503. The service is unavailable.</p>
</BODY></HTML>

如果我转到 Http:// 上的页面,它会起作用。

没有其他事情发生。

应用程序

该应用程序是一个 ASP.NET 4.6 MVC 应用程序。它目前可在 2012 年至 2016 年的多台服务器上运行,并且 Windows 10 没有问题。

设置:

  • 全新的 AWS EC2(Web 应用程序)
  • 4.7 的所有 ASP.NET 服务均已安装。
  • SQL Server 安装在此 EC2 上
  • 列表项
  • IIS 已设置正确的应用程序池(并且它们已启动)
  • 绑定正确
  • 我已授予网络服务和 IIS 用户对 /website/ 文件夹的完全控制权
  • 绑定信息:

我做了什么

  • 在 HTTP 503 上浏览了大约 30 个帖子,但运气不佳。
  • 我在其中一个应用程序中添加了一个 test.html 页面。我仍然会收到 HTTP 503。
  • 验证根 SSL 证书安装正确
  • 已安装中间 ssl 证书
  • 向服务器添加了一个新用户,授予他们“全部”权限和对 /websites/ 的完全控制权,将他们设置为应用程序池(重新启动的应用程序池)中的用户,仍然是 503。
  • Quintuple 检查了应用程序池以确保它们已启动。它们已启动。
  • 我在事件日志或 /Server Roles/ Web 服务器 (IIS) 日志中看不到任何错误。
  • 运行命令:netsh http show urlacl url=https://+:443/

我有时会得到这两个:

Reserved URL            : https://+:443/
Can't get security descriptor, Error: 87


    Reserved URL            : https://+:443/
    SDDL: O:NS

我很茫然,因为我没有关于 503 为何回来的其他信息。这几乎就像 IIS 没有运行一样,因为它甚至无法提供 test.html 页面。我完全希望这将是一件非常简单的事情,我将在一周内面对手掌或 Server 2019 的独特之处。

【问题讨论】:

  • 在 IIS 中为网站启用了哪些身份验证架构设置? (IIS>展开站点>选择有问题的站点>在右窗格中选择身份验证)
  • @TravisActon 匿名身份验证已启用,其余已禁用。这类似于我们的生产站点。
  • 选择 anon 时单击编辑按钮并确保它正在使用您的应用程序池身份
  • @TravisActon 它正在使用 IUSR。应用程序池正在使用 ApplicationPoolIdentity。我将其更改为另一个组和其他一些选项,但没有任何改变。
  • 如果我阅读了该权利(在手机上),那么它看起来被标记为保留。在 IIS 中翻转您的站点以使用端口 8443 而不是 443,或者您可以将 netsh 的命令从 show 翻转为 delete 以清除 res。如果您不知道为什么首先要删除 res,我会对删除 res 有点犹豫......

标签: asp.net-mvc iis-10 windows-server-2019


【解决方案1】:

从 cmets 故障排除中提取的根本原因:

如果 IIS 在 http 上为应用程序提供服务,但接收到 503 服务对 https 不可用,并且确认 http 和 https 协议都已启用,请确认 SSL 端口 443 未被系统保留。

您可以通过从命令行运行以下命令来做到这一点:

netsh http show urlacl url=https://+:443/

如果输出确认 URL 已保留,那么您有两个选择:

  1. 运行命令删除预留

    netsh http delete urlacl https://+:443/
    

***如果保留端口必须保持不变(运行 cmd netstat -a -n -o | findstr 443 以查找在端口上运行的 PID,并使用进程资源管理器从 PID 中识别进程)然后使用选项 2

  1. 重新配置您的应用程序以在端口 8443 上运行(假设该端口也未显示在保留的 url 列表中。

***尽管您可以使用任何端口来运行 SSL,但浏览器会自动为 443 和 8443 加上 https 前缀。在 443 和 8443 以外的端口上使用 SSL 通信的应用程序必须特别注意将用户重定向到 https,因为浏览器不会自动添加前缀。另请注意,某些接入点禁用不超过 80 或 443 的通信是常见的做法,因此环境因素可能会影响切换端口的使用...即为您的用户做尽职调查:)

【讨论】:

  • 罪魁祸首是 Windows Admin Center 占用了 443 端口。在我取消对它的控制后,我们将其卸载。
  • 看起来你可以定义它在安装时使用的端口,很高兴知道这些小问题以备将来使用。不过,关于如何更改端口安装后的文档并不多。我想会有更强大的文档,因为我想会有更多的人遇到这个问题......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 2015-06-10
相关资源
最近更新 更多