我正在遵循 Scott gu 将 App_Offline.htm 页面放置在我的应用程序路径以使其脱机的技巧 - http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx
不过,它似乎不适用于我的一个网站。我将文件放在我的一个站点的 IIS7 中,所有流量都被重定向到它。
但是在另一个站点、同一台服务器等中,我得到一个包含“服务不可用”的页面。
不知道我哪里出错了 - 有什么想法吗?
我正在遵循 Scott gu 将 App_Offline.htm 页面放置在我的应用程序路径以使其脱机的技巧 - http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx
不过,它似乎不适用于我的一个网站。我将文件放在我的一个站点的 IIS7 中,所有流量都被重定向到它。
但是在另一个站点、同一台服务器等中,我得到一个包含“服务不可用”的页面。
不知道我哪里出错了 - 有什么想法吗?
我设法通过将以下代码放入我的 web.config 来解决它:
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<defaultDocument>
<files>
<clear />
<add value="index.html" />
<add value="app_offline.htm" />
</files>
</defaultDocument>
<httpErrors errorMode="Custom" existingResponse="Replace">
<clear />
<error statusCode="503" path="App_Offline.htm" responseMode="File" />
</httpErrors>
</system.webServer>
</configuration>
通过汇总Scott Gu、npiaseck@IIS 论坛和Kurt Schindler的一些信息,找到了此修复程序。
这是我的解决方案 - 注意 503 ......
<httpErrors existingResponse="Replace" errorMode="Custom">
<remove statusCode="404" subStatusCode='-1' />
<remove statusCode="400" subStatusCode='-1' />
<remove statusCode="500" subStatusCode='-1' />
<remove statusCode="503" subStatusCode='-1' />
<error statusCode="404" path="404.html" prefixLanguageFilePath="" responseMode="File" />
<error statusCode="400" path="404.html" prefixLanguageFilePath="" responseMode="File" />
<error statusCode="500" path="500.html" prefixLanguageFilePath="" responseMode="File" />
<error statusCode="503" path="app_offline.htm" responseMode="File" />
</httpErrors>
我最近在一个 MVC 站点上遇到了这个问题,当我想使用 app_offline.htm 文件时,我设法通过用一个干净、最小的 web.config 替换我最初拥有的 web.config 来解决它。
<?xml version="1.0"?>
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
如果我有更多时间,我会在 web.config 中找到改变行为的确切内容,但这值得一试。
我最近在向app_offline.htm
我的一个网站添加页面时遇到了同样的问题。
这里的所有答案都建议将 503 响应设置为相同的app_offline.htm
,我已经有一个不同的 503 页面,并且真的不想摆弄它。
另外,我想知道为什么会这样。
由503
AspNetInitializationExceptionModule 发送,我假设如果 asp.net 运行时检测到app_offline.htm
网站根目录中的文件,它会发送一个
503 Service Unavailable
并且还会发送 的内容app_offline.htm
作为响应。
但是,因为它是一个错误响应,所以 IIS 错误处理开始了:
<httpErrors existingResponse="Replace">
这里的Replace
意思是,忽略 ASP.NET 发送给您的任何内容并使用您自己的 503 响应。app_offline.htm
通过指定与其他答案中建议的相同页面( ),可以解决问题。
解决此问题的另一种方法是更改现有响应属性,例如:
<httpErrors existingResponse="Auto">
现在 IIS 接受来自 ASP.NET 的响应并显示app_offline.htm
文件的内容。
但Auto
也意味着其他 ASP.NET 错误响应可能会通过。
您需要做的就是在使用 app_offline.htm 时将 web.config 重命名为 web.config.bak 之类的其他名称。