通过默认云服务域 url 浏览网站时出错: HTTP 错误503。 服务不可用

本文提供有关解决在其中遇到错误 "HTTP 错误 503" 的问题的信息。 服务不可用。 访问你的云服务应用程序时。

原始产品版本:   API 管理服务
原始 KB 数:   4464854

备注

请参阅 Azure 云服务故障排除系列一文,这是实验室的第五个方案。 确保按照 种方式遵循了超转换器应用程序的实验室设置说明,以重新创建问题。

症状

如果您的 http://cloudservicelabs.cloudapp.net/ web 角色 "SuperConvertor" 处于 "正在运行" 状态,则在浏览云服务应用程序 url () 时,会收到 HTTP 错误503响应。 重新启动或重置角色实例无法解决问题。

服务不可用

HTTP 错误503。 服务不可用。

故障排除步骤

当您的应用程序中遇到50x 错误时,通常意味着在服务器端发生了一些损坏。 503 Service Unavailable 服务器错误响应代码指示服务器尚未准备好处理该请求。 您必须考虑为什么新部署的云服务应用程序突然开始引发此错误。 应用程序崩溃了吗? 是否有请求到达 IIS 服务器? 服务器是否在高负载下?

首先,检查本地 IIS 服务器。 您可以使用 RDP 连接到 web 角色实例,并在本地浏览应用程序。 在本地浏览网站之前,请检查应用程序和系统事件查看器日志,以消除 IIS ApplicationPool 崩溃或任何其他与应用程序相关的异常的任何可能性。

接下来,检查下面列出的 IIS 日志,  C:\Resources\directory\{Deployment ID}.SuperConvertor.DiagnosticStore\LogFiles\Web   检查是否可以获取有关 HTTP 503 错误的详细信息,如子状态代码、执行请求所用的时间等。

如果没有生成任何日志,这意味着该请求根本不会到达 IIS。 根据 IIS 体系结构,HTTP.sys 侦听来自网络的 HTTP 请求,将请求传递到 IIS 进行处理,然后将已处理的响应返回给客户端浏览器。 默认情况下,IIS 将 HTTP.sys 作为侦听 HTTP 和 HTTPS 请求的协议侦听器以及在 HTTP.sys 级记录在此目录中的任何错误  D:\Windows\System32\LogFiles\HTTPERR 。 现在,我们来看看我们可以在 HTTPErr 日志中找到的内容:

#Software: Microsoft HTTP API 2.0
#Version: 1.0
#Date: 2018-08-13 03:12:38
#Fields: date time c-ip c-port s-ip s-port cs-version cs-method cs-uri streamid sc-status s-siteid s-reason s-queuename
2018-08-13 03:25:22 293.217.138.127 12052 10.1.2.5 80 HTTP/1.1 GET / - 503 - N/A -
2018-08-13 03:25:22 293.217.138.127 20463 10.1.2.5 80 HTTP/1.1 GET /favicon.ico - 503 - N/A -

如果您看到上面的日志,则会从 HTTP.sys 级别引发 HTTP 503,并且客户端请求将从那里拒绝,而不会进入 IIS。 现在,我们将从 IIS 本地浏览网站,并查看发生的情况-您可能会收到错误- 无法显示此页。你可能会注意到,IIS 网站的绑定如下所示,这就意味着,为了访问此特定网站,您需要通过自定义域名访问 (www.cloudservicelabs.com)

IP 地址 端口 主机标头
10.1.2.5 80 www.cloudservicelabs.com

每个客户端都可以使用绑定访问网站。网站的典型绑定采用 IP:端口: HostHeader 的形式。 它是一种机制,可告知服务器如何访问此网站。 你将想到的下一个问题是,自定义主机名来自何处。

ServiceDefinition 是您可以为 web 角色配置绑定的地方,下面是您可能会看到的应用程序的内容:

<WebRole name="SuperConvertor" vmsize="Standard_D1_v2">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="www.cloudservicelabs.com"/></Bindings>
</Site>
</Sites>

在实际方案中,为了通过自定义主机名访问你的云服务应用程序,你需要为此主机标头配置 DNS 以与云服务 VIP 相对应。 现在,您可以从Binding元素中删除hostHeader属性,然后重新部署云服务解决方案以解决问题。