我的网站上有一个'app_offline.htm'文件。我如何配置IIS以使用特定的状态代码(例如,209)而不是默认的一个(200)来返回它?
答案 0 :(得分:4)
使用ASP.Net的'app_offline.htm'功能的另一种方法是使用IIS URL Rewrite Module,它有一个huge bag of tricks,设置自定义响应代码就是其中之一。
如果页面内容不重要,只有响应代码,那么使用该模块,您可以配置一个规则,该规则将返回一个空白响应,其中包含209代码到任何请求,只要规则已启用。
这将在你的web.config中实现,如下所示:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="app_offline" stopProcessing="true">
<match url=".*" />
<action type="CustomResponse" statusCode="209" statusReason="System unavailable" statusDescription="The site is currently down for maintenance, or something." />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
答案 1 :(得分:3)
由于IIS对网站根目录中名为“app_offline.htm”的文件进行了特殊处理,因此除非您重命名该文件,否则此建议可能无效。但是,无论如何它在这里......
您可以使用HttpHandler。在您的web.config中,添加如下内容:
<add name="app_offline_GET" path="app_offline.htm" verb="GET" type="namespace.classname,dllname" />
显然,请在'type'属性中替换正确的信息。
在HttpHandler中,执行以下操作:
public void ProcessRequest(HttpContext context) {
context.Response.WriteFile("app_offline.htm");
context.Response.StatusCode = 209;
context.Response.StatusDescription = "whatever";
}
答案 2 :(得分:1)
要根据状态代码显示特定内容,您可以让响应设置状态代码,并根据httpErrors部分中的代码映射要显示的内容。请参阅此帖https://serverfault.com/questions/483145/how-to-add-a-site-wide-downtime-error-message-in-iis-with-a-custom-503-error-co
中的示例为了保存的利益,我将复制以下示例:
<system.webServer>
...
<rewrite>
<rules>
<rule name="SiteDown" stopProcessing="true">
<match url=".*" />
<action type="CustomResponse" statusCode="503" statusReason="Down for maintenance" statusDescription="will be back up soon" />
</rule>
</rules>
</rewrite>
<httpErrors existingResponse="Auto" errorMode="Custom" defaultResponseMode="File">
<remove statusCode="503" subStatusCode="-1" />
<error statusCode="503" path="503.html" />
</httpErrors>
</system.webServer>