1

我刚刚为我的 Appharbor Web 应用程序设置了“维护”模式。通过设置配置变量,站点会将用户重定向到自定义的“停机维护”页面。我希望以 HTTP 503 状态返回此页面,因此该站点在关闭时不会被索引。我在动作中设置响应代码,如下所示:

public ActionResult Maintenance()
{
    Response.StatusCode = 503;
    return View();
}

这一切都在我的本地服务器上按我想要的方式工作。我得到了带有 503 状态码的自定义视图。但是,一旦我部署到 AppHarbor,我就会得到一个普通的 nginx 503 错误页面。似乎 nginx 可能正在拦截响应并返回自己的错误。关于如何让自定义主体与 503 状态一起显示的任何想法?这是我看到的原始响应:

HTTP/1.1 503 Service Unavailable
Server: nginx
Date: Fri, 07 Jun 2013 19:26:09 GMT
Content-Type: text/html
Content-Length: 27
Connection: keep-alive
Cache-Control: private

The service is unavailable.
4

1 回答 1

5

该消息The service is unavailable.实际上是 IIS 的默认 HTTP 503 消息。问题是IIS(不是nginx)默认拦截并重写响应。

您可以通过使用您喜欢的httpErrors元素来配置此行为:web.config

<system.webServer>
    <httpErrors existingResponse="PassThrough"></httpErrors>
</system.webServer>

请注意,配置它可能会对您的应用程序产生安全影响。您可以在本文中阅读有关配置的更多信息httpErrors

于 2013-06-11T21:25:05.797 回答