ASP.NET 2.0-如何使用app_offline.htm


120

我读过关于 app_offline.htm可放在.NET 2.0应用程序根目录中文件的信息,文件实际上将关闭该应用程序并禁止其他任何页面被请求。

我已将文件放置在根目录中,但我的网站仍在加载。我进入IIS中的默认文档并将其设置为app_offline.htm,站点仍然加载(尽管这可能是缓存问题)

无论如何,有人使用它遇到问题吗?难道我做错了什么?


是否有Microsoft页对此进行了记录?
Coops



我已经成功使用app_offline.htm隐藏了我的Web应用程序内容并显示了临时页面。但是,即使删除了app_offline.htm文件,我仍然无法查看原始数据。她是我的问题:stackoverflow.com/questions/42979042/…–
naz786

Answers:


160

我过去使用过非常方便的app_offline.htm技巧来关闭/更新站点,而没有任何问题。

请确保您实际上将“ app_offline.htm”文件放置在IIS中配置的网站的“根目录”中。

另外,请确保文件的名称完全正确: app_offline.htm

除此之外,您不需要对IIS进行其他任何更改,因为此文件(具有此特定名称)的处理是由ASP.NET运行时而不是由IIS本身(对于IIS v6)处理的。

但是请注意,尽管将此文件放置在网站的根目录中将迫使应用程序“关闭”并显示“ app_offline.htm”文件本身的内容,但是任何现有请求仍将使真实网站得到服务给他们。只有请求将获得app_offline.htm内容。

如果仍有问题,请尝试以下链接以获取更多信息:

顾家'的App_Offline.htm

App_Offline.htm,并解决“ IE友好错误”功能

app_offline.htm将停止当前请求还是仅停止新请求?


6
@JackM-没问题!实际上,我经常将文件留在我的网站上,并称其为“ xapp_offline.htm”。因此,它只是坐在那里无所事事。当我要升级部分或全部站点时,只需重命名文件并删除“ x”前缀(通常通过FTP完成)。这将为我关闭站点,我进行升级,然后使用“ x”前缀将文件重命名!
CraigTP

@JackMarchetti-这也适用于使用global.asax路由的ASP.NET MVC网站吗?我在这里检查了所有建议,但仍然没有运气
让它

更新到以前的评论:它现在正在工作,并且一定是某种缓存问题。我曾经使用过<CTRL> + Refresh,但是大概是它被缓存在其他地方了。
Squig

是否有Microsoft页对此进行了记录?
合作社

1
@CodeBlend好,链接ScottGu的博客是相当正式,但我想最“官方”微软页面会是这样一个在MSDN:msdn.microsoft.com/en-us/library/vstudio/...
CraigTP

47

确保您的app_offline.htm文件至少为512个字节长。零字节的app_offline.htm无效。

更新:较新版本的ASP.NET/IIS的性能可能比我初次撰写时要好。

更新2:如果您使用的是ASP.NET MVC,则将以下内容添加到web.config中:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

1
我的确切文件名带有一个空文件,并且可以正常工作-无论我使用什么url,都显示空白页
Coops 2014年

检查此链接为512字节的限制问题:codeproject.com/Articles/21319/...
Massood Khaari

尤其是对于旧版本的IE而言,它可以用其自身的错误消息替换页面
ChewToy

Scott Gu也在他的博客
马特

2
通过将我的web.config完全替换为上面的内容,我只能使MVC网站进入应用离线模式
马修·洛克

14

请注意,这在IIS 6和7.x以及.NET 2、3和4.x上的行为相同。

还要注意,当存在app_offline.htm时,IIS将返回以下http状态代码:

HTTP/1.1 503 Service Unavailable

这都是设计使然。这使您的负载均衡器(或其他负载)可以看到服务器处于脱机状态。


1
您肯定不想让负载均衡器认为服务器处于脱机状态,因为您想app_offline.htm在维护窗口中向用户显示吗?
路加福音

2
@Luke:503响应为何有用的一个更好的例子:最好是Google的网络爬虫知道您的网站当前已关闭,而不是决定将您的“网站已关闭”内容编入索引(并将您的网站标记为大量重复)内容)。同样,如果您的CDN可以检测到您的原点已关闭并因此避免缓存内容,则可能会有所帮助。
布赖恩

10

可能的权限问题

我知道这篇文章相当老,但是遇到了类似的问题,我的文件拼写正确。

我最初在另一个位置创建了app_offline.htm文件,然后将其移动到应用程序的根目录。由于我的设置,我遇到了权限问题。

该网站的行为就好像它不在那儿一样。在根目录中创建文件而不是移动文件,解决了我的问题。(或者您可以只在属性->安全中修复权限)

希望它能帮助某人。


4

确保该app_offline.htm目录位于IIS中的虚拟目录或网站的根目录中。


这绝对是根源。我有我的inetput \ wwwroot [WebsiteDirectory] ​​\ app_offline.htm-
杰克·马尔凯蒂

3

确保文件扩展名在资源管理器中可见并且文件名实际上是

app_offline.htm

app_offline.htm.htm


0

我遇到了一个与原始问题非常相似的问题,该问题花了我一段时间才能解决。

以防万一其他人正在MVC应用程序上工作并找到进入该线程的方式,请确保您已将通配符映射到定义的相应.Net aspnet_isapi.dll。一旦这样做,我的app_offline.htm就开始表现出预期。


IIS 6配置步骤

在“ IIS应用程序属性”上,选择“虚拟目录”选项卡。

在“应用程序设置”下,单击“配置”按钮。

在“通配符应用程序映射”下,单击“插入”按钮。

输入C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll,然后单击“确定”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.