asp.net - 为特定 URL 提供 app_offline.htm 时,将 http 状态 503 更改为 200

标签 asp.net asp.net-mvc iis iis-7 app-offline.htm

ASP.NET 提供的 app_offline.htm 文件返回 http 状态 503。对于大多数情况,这是正确的行为。但是,在请求特定 URL 的情况下(例如 https://www.mywebsite.com/monitor ),我想将返回的 http 状态更改为 200,同时在所有其他情况下仍返回 http 状态 503。这可能吗?

我想要这样做的原因是每当我们在网站上进行定期维护时,我们都会使用 app_offline.htm 文件,但我们不希望我们的正常运行时间监控服务 (Pingdom.com) 在我们的计划期间报告停机时间维护。

我认为这必须在 IIS 级别,因为 app_offline.htm 在请求处理周期的早期就得到服务。

最佳答案

请注意,App_Offline 只是用于删除 ASP.NET 部分,与 IIS 站点无关。所有非 ASP.NET 请求(例如 .htm)都将通过正常的 IIS 管道。

话虽如此,HTTP 503 是一个不可用的服务错误。 App_Offline.htm 使站点部分脱机,当站点脱机时,所有 ASP.NET 请求都会收到 503 响应,这是正常且正确的。

使用 HttpModule 或 ASP.NET 管道中的任何代码绕过此问题不是有效的解决方案。

由于您在维护期间已在 IIS 根目录中创建/复制 App_Offline.htm,因此我建议添加 maintenance.htm 作为默认文档您的 /monitor 文件夹或 IIS 站点,并在维护期间在其中创建/复制 maintenance.htm 文件:那么无论 ASP.NET 站点是什么,都将访问默认页面是否离线。

如果您的探测器在没有指定任何页面的情况下调用 http://servername/monitor/ uri,它将起作用。

您只需在维护后删除它 - 就像删除您的 App_Offline 一样。

关于asp.net - 为特定 URL 提供 app_offline.htm 时,将 http 状态 503 更改为 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081187/

相关文章:

c# - Google Analytics API 显示页面浏览量

c# - 将字节直接泵入 Response.OutputStream - 如何处理字节数?

visual-studio - Http到https。 IIS还是Visual Studio?

html - css 填充在媒体中不起作用

c# - 在使用 MasterPage 的网络表单上使用 CSS

c# - 如何以与 stackoverflow 相同的方式路由 URL

java - 通过 IIS 通过 ISAPI 或 URL 重写公开 Java Web 应用程序

asp.net - Node Js - Mongo 动态查询字符串数组

html - 边框仅适用于 chrome

c# - 在 Controller 上下文可用之前查找请求是否为子操作请求