如何关闭.NET站点进行维护?

时间:2011-02-01 20:45:35

标签: asp.net maintenance

我有一个ASP.NET网站,我将不得不采取一些重大的结构更新,我想知道我应该从客户端的角度来看待它。我听说过App_Offline.htm文件或类似的东西,但我从来没有真正得到过成功的工作。有谁知道怎么做?

修改

我的应用程序正在运行ASP.NET 4.0,这是值得的。

3 个答案:

答案 0 :(得分:14)

我没有弄乱app_offline愚蠢(除了其他原因,你在执行维护时无法继续在内部看到网站),我在IIS中创建了一个额外的“维护停机”站点,通常会停止。它具有与主站点相同的IP,主机头等,但只有default.aspx,图像文件夹和样式表。该文件包含“此站点将在xx:xx PM CST之前停止维护”消息。

当我准备好执行更新时,我会停止主站点并启动维护站点,然后维护站点处理它收到的任何请求,当然还会返回维护消息。

维护完成后,请停止维护占位符站点,然后重新启动主站点。

如果您正在使用主机标头,则可以修改此方法,以便在维护站点处理外部请求时,站点仍可通过LAN / WAN在内部访问。一种简单的方法是在启动维护站点之前从主站点删除<*>.yourdomain.com的主机头,并确保主站点具有可在内部访问的其他主机头(例如,添加到本地主机文件中) )。当您启动维护站点时,它将处理外部请求,而主站点将处理对仅内部标头的请求。

或者(这看起来很复杂,但是省去了添加和删除标题的麻烦),创建了三个站点:

  1. 主站点:按正常操作配置。
  2. 维护站点:与主站点具有相同的IP,主机标头等,但仅包含默认的“维护停机”页面以及所需的任何图像,C​​SS等。
  3. 内部测试站点:复制主站点的配置并指向相同的文件夹,但只有主机头等,以用于不在公共DNS中的内部名称。
  4. 这样,您只需停止主站点并启动其他两个站点,以便将外部流量汇集到“维护人员”网站,同时您仍然可以查看和调整主站点。这对于在部署期间往往会出现的最后几分钟的测试/错误修复很有帮助。

    <强>更新

    如果您无权访问服务器或IIS管理器,则很可能无法使用任何此类服务器。假设您的访问权限仅限于您自己的文件夹,您的选项似乎是将app_offline.htm部署到站点的根目录(ASP.NET检查该文件名),或者只是将整个站点替换为“维护“app。也许其他人会选择替代品。

答案 1 :(得分:4)

IE的技巧是推翻线路特定的字节数,否则IE显示不那么友好的404错误。这里有更多细节:http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx

答案 2 :(得分:0)

如果您有一个良好的预发布测试流程和谨慎的发布程序,您可能不会长时间停机。

在这种情况下,将名为App_Offline.htm的文件放入您的站点根工作正常。 IIS将替换您的网站,直到您删除它。这是一种无痛的方式,可确保您在转换时不会更新任何内容。

我的网站上只有一个带有网站标识的标题,以及一条消息,我们将在最近二十分钟内进行维护。而已。我花了大约五分钟来写IIRC。

我肯定会推荐这个短时间不到半个小时。任何更长的时间,你可能正在考虑一个重大的系统变化,保证像David Lively那样的方法。