asp.net – 什么是建议替代常见的破坏app_offline.htm黑客?

在相当一些情况下,将app_offline.htm放在根目录中是正确的:你做一些更新,消息在更新时出现,就是这样.这个想法是,正如微软所说,在任何东西被调用之前,IIS首先检查app_offline.htm是否存在,如果是这样,它将取消所有内容显示它.

所以对于这么好,但在许多情况下,它不起作用:

>当您在ASPX页面中出现编译错误,并且用户直接链接到该错误
>当您有冲突的程序集
>当您的web.config中有解析错误
>在删除/上传整个网站的过程中.
>仍然显示与静态HTML页面的直接链接
>文件未找到,在显示消息之前抛出访问被拒绝

可能更多的场景存在失败.我的观点是:对于任何严重的更新工作,app_offline.htm是不合适的.我有时在IIS中创建重定向到另一个站点,但是另一个站点可能并不总是可用,并且可能会混淆用户.

理想情况下,我希望将当前位置保留在最终用户的url位置栏中,显示消息,并让页面自动刷新每分钟,以查看该站点是否已回覆,以便用户继续在哪里当网站回来的左边.虽然技术上足够简单,静态页面,但是由于上述原因,会导致错误的发生.

解决方法

没有人提到web.config和重新编译,所以这里是.我遇到这个问题我不同意说这是“不打算用于刺激使用”的人:VS 2010在部署时使用app_offline,因此它被编入代码.

解决办法(信用于Kurt Schindler,blog post here).

>将app_offline.htm复制到您的网站
使一个web.config看起来像这样(见下面编号的块)
>将该web.config复制到您的远程目录
>将除真实的web.config之外的所有站点文件复制到远程目录
>将真正的web.config复制到远程目录(应该启动重新编译)

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>

这样做的结果是,如果您关心在部署期间看不到YSOD的最终用户,则不能直接使用VS 2010应用程序部署.因此,您需要使用Nant或其他部署工具来执行此操作.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...