2011-02-01 97 views
7

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

编辑

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

回答

14

与其解释app_offline的恶意(除其他原因,你不能继续在执行维护时在内部看到该站点),我在IIS中创建了一个额外的“维护”通常停止。它具有与主站点相同的IP,主机标题等,但只有default.aspx,图像文件夹和样式表。该文件包含“此站点将关闭以进行维护,直到xx:xx PM CST”消息。

当我准备好执行更新,我停止主网站,并开始维修站点,然后处理接收到的任何请求,当然,返回维修信息。

当维修完成后,停止维护预留​​网站,并重新启动你的主站点。

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

或者(这看起来复杂,但可以节省您的添加和删除头的麻烦),创建三个站点:

  1. 主要网站:配置为正常运行。
  2. 维护站点:与主站点具有相同的IP,主机标题等,但只包含默认的“维护下载”页面以及所需的任何图像,C​​SS等。
  3. 内部测试网站:复制主站点的配置并指向相同的文件夹,但仅具有主机标头等,用于不在公用DNS中的内部名称。

这样,您只需要停止主站点并启动另外两个站点,以便将外部流量汇集到“停机维护”站点,同时仍然可以查看和调整主站点。这对于在部署过程中倾向于出现的最后几分钟的测试/错误修复很有帮助。

更新

如果您没有访问服务器或IIS管理器中,你最有可能将无法使用任何。假设您的访问权限限于您自己的文件夹,您的选择似乎要么将app_offline.htm部署到该网站的根目录(ASP.NET将检查该文件名),要么只是将整个网站替换为“停机维护”应用程序。也许别人会用替代品加入。

+0

这是一个很好的答案,但如果你真的没有服务器访问(在共享服务器上托管)呢? – Jason 2011-02-01 21:19:13

0

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

在这种情况下,将名为App_Offline.htm的文件放入您的网站根目录可以正常工作。 IIS将用它替换你的网站,直到你删除它。这是一个无痛的方式,确保您在转换时没有任何更新。

矿只是有一个标题与网站标志和一条消息,我们将停机维护长达二十分钟。而已。我花了大约五分钟来写IIRC。

我肯定会推荐这短暂的不到半小时的急剧下降期。任何更长的时间,你可能正在寻找一个重要的系统变化,像David Lively的方法。