Abe*_*bel 14 asp.net app-offline.htm
在某种情况下,放在app_offline.htm根目录中是正确的:您进行了一些更新,更新时会显示消息,就是这样.正如微软所说,这个想法是,在调用任何东西之前,IIS首先检查app_offline.htm是否存在,如果是,它会取消所有内容并显示它.
所以非常好,但在许多情况下它不起作用:
可能存在更多失败的情景.我的观点是:对于任何严肃的更新工作,app_offline.htm都不合适.我有时会在IIS中创建一个重定向到另一个站点,但是另一个站点可能并不总是可用,并且可能会使用户感到困惑.
理想情况下,我希望将当前位置保留在最终用户的URL位置栏中,显示消息,并让页面每分钟自动刷新以查看该站点是否返回,以便用户继续当网站回来时的左边.虽然在技术上使用静态页面很容易,但是在抛出错误的那一刻,它会因上述原因而失败.
jco*_*lum 10
没有人提到web.config和重新编译,所以在这里.我遇到过这个问题.我不同意那个说"不打算使用prod"的人:VS 2010在部署时使用了app_offline,因此它被编入代码中.
解决方法(归功于Kurt Schindler,博客文章).
web.config中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpRuntime waitChangeNotification="300"
maxWaitChangeNotification="300"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这样做的结果是,如果您关心在部署期间没有看到YSOD的最终用户,则无法直接使用VS 2010应用程序部署.因此,您需要使用Nant或其他部署工具来执行此操作.
我在一些非常高流量的网站上看到这种方法的一种方法是在inetpub目录中有多个文件夹.就像是:
inetpub
\ site2011-02-03
\ site2011-03-14
Run Code Online (Sandbox Code Playgroud)
其中"site2011-02-03"是现有网站,"site2011-03-14"是今天推送的网站.完成对新文件夹的推送后,将IIS站点更改为指向新目录.如果失败,您将IIS更改为旧版本.
坦率地说,我在使用app_offline.htm时从未遇到过您所说的错误.它总是能够正常运行以降低网站; 即使是直接链接到页面.我猜你可能还有别的东西在这里.我已经使用了IIS 7和7.5(2008 R2).
更新
刚查看我们的配置.我们将app_offline.htm映射为我们服务器上的顶级默认文档.这可能是一个缓解因素.
| 归档时间: |
|
| 查看次数: |
4321 次 |
| 最近记录: |