【问题标题】:Classic ASP "Down for Maintenance" page经典 ASP“停机维护”页面
【发布时间】:2008-12-02 11:02:27
【问题描述】:

我正在对旧的经典 ASP 应用程序进行一些更改。我已经在本地进行了更改,现在我想将更改的文件复制到服务器。同时我需要下载Access数据库,给一些表添加一些字段,然后重新上传。出于这个原因,我需要能够阻止访问者在发生这种情况时修改数据库。

我的主要问题是,设置快速“停机维护”页面的最佳方式是什么,无论访问者请求哪个页面,该页面都会立即显示。应用程序已经建立,所以我希望得到一个不需要我重新设计应用程序架构的答案。

我的第二个问题(也许这应该是一个单独的问题): 有没有比复制、修改和再次粘贴更好的方法将字段添加到数据库表?如果这是一个愚蠢的问题,请原谅 - 我是 ASP 新手 - 也是 Windows 新手。

我只有 FTP 访问远程服务器。

谢谢。

【问题讨论】:

  • 如果您使用 ASP 进行编程,您使用的不是 Access 数据库,而是 Jet 数据库。

标签: iis ms-access asp-classic


【解决方案1】:

两种方式:

1

如果您在每个 asp 页面中执行服务器端包含,您可以在该包含中执行 response.redirect 到 /upgrading.html

2

在 global.asa 中,您可以在 session on start 事件中执行 response.redirect。这可能是最好的方法。仅适用于 .asp 页面,而不适用于客户端访问 .html 页面。

【讨论】:

    【解决方案2】:

    您是否可以通过任何控制面板访问该网站?

    当我曾经运行多个 ASP Classic 网站时,我经常在 5 分钟内关闭它们以完成我需要的操作。

    我知道对你的访客不礼貌。

    正如其他人所说,您可以重定向到页面,但这不会阻止人们访问 html 页面中的静态内容,但这可能并不重要,至少它可以阻止他们在您下载时对 mdb 进行更改它。

    很遗憾 ASP.net 的 app_offline.htm 不适用于 ASP classic。

    我曾经使用的另一个选项是创建一个包含脱机消息的 default.htm 文件,而 IIS 的设置方式 default.htm 覆盖了 default.asp,因此只需上传 default.htm 即可更改主页。这当然不会阻止任何人使用任何其他 .asp 页面。

    所以没有真正的答案!对不起。

    【讨论】:

      【解决方案3】:

      如果您只有对服务器的 FTP 访问权限(并且无法控制 IIS),只需将 response.redirect 插入到所有 asp 页面顶部的“down for maintenace”页面,并在更新完成后将其删除.

      可以使用 ALTER TABLE 语句对数据库进行更改。

      【讨论】:

      • 更改表。 SQL!当然! :P 我不觉得自己很愚蠢。陌生的环境让我的大脑蒙上了一层阴影。所以计划是将alter table语句粘贴到一个asp文件中,上传它,在浏览器中请求页面,然后发送其余文件。谢谢 mapache Joel。
      【解决方案4】:

      关于“Down Maintanance”页面问题,如果每个页面中都有一个包含文件(用于标题),您可以将 mapache 的想法更进一步,您可以将 Response.Redirect 放入该文件中并上传到位。这将避免对所有页面进行更改。

      另一种选择是上传一个临时 html 文件,该文件将首先由 IIS 找到。在 IIS 中,您可以设置在域/文件夹中查找哪个页面 name.ext。例如,当您浏览 www.example.com 时,您没有指定要查找的页面,因此它可以加载 index.html 或 index.htm,例如取决于设置。这将取决于您的主机配置设置,但经过一些反复试验,我相信您可以找出他们使用的是哪一个。 IIS 常用的有 default.htm、default.html、index.html 和 index.htm。然后你可以把它放在网站的每个文件夹中(我知道不理想),然后进行维护。

      更新数据库时,您可以运行用 sql 编写的迁移脚本来更新数据库的架构和数据。由于您只有 FTP 访问权限,这将需要某种页面,您可以将 sql 粘贴到并运行。然而,这会带来安全问题,因此下载数据库、进行更改然后再次上传可能更容易。除了这样做之外,您还可以保存文件并进行备份:-)

      希望这会有所帮助。

      【讨论】:

        【解决方案5】:

        比包含文件更好,只需使用 Global.asa。

        在Global.asa的Application_onStart中,添加

        Application("Offline")= True
        

        在所有 ASP 文件的顶部,添加

        If VarType(Application("Offline")) = vbBoolean Then If Application("Offline") Then Response.Redirect "App_Offline.htm"
        

        (double-if 解决了缺少 VBScript 的短路运算符的问题,因此会出现任何数据类型错误。)

        您甚至可以将 Global.asa 代码设置为

        Set fso= Server.CreateObject("Scripting.FileSystemObject")
        Application("Offline")= fso.FileExists(Server.MapPath("App_Offline.htm"))
        Set fso= Nothing
        

        如果存在脱机页面,它将启用它,例如 ASP.NET。但是,只有在服务器重置(使用 iisreset)或修改 Global.asa 文件时,才重新解析应用程序启动代码,仅添加 App_Offline.htm 是不够的。

        【讨论】:

          【解决方案6】:

          在 web.config 中添加以下代码 <?xml version="1.0"?> <configuration> <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> </configuration>

          并将 app_offline 放在根文件夹下。这将起作用。

          【讨论】:

            猜你喜欢
            • 2023-03-17
            • 2011-11-26
            • 2013-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-10
            • 1970-01-01
            相关资源
            最近更新 更多