经典ASP“向下维护”页面

时间:2008-12-02 11:02:27

标签: iis ms-access asp-classic

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

我的主要问题是,设置快速“向下维护”页面的最佳方式是什么,该页面将立即显示,无论访问者请求哪个页面。该应用程序已经建立,所以我宁愿回答不要求我重新修改应用程序的架构。

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

我只能访问远程服务器。

感谢。

6 个答案:

答案 0 :(得分:5)

两种方式:

1

如果你在每个asp页面中都有一个服务器端包含你可以做一个response.redirect,其中包括/upgrading.html

2

在global.asa中,您可以在启动事件的会话中执行response.redirect。这可能是最好的方式。仅适用于.asp页面,而不是客户端来到.html页面。

答案 1 :(得分:3)

您是否有任何控制面板访问该网站?

当我以前运行多个ASP Classic网站时,经常会将它们关闭五分钟以完成我需要的工作。

粗鲁对待我认识的访客。

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

令人遗憾的是,ASP.net的app_offline.htm不适用于ASP classic。

我以前使用的另一个选项是创建一个具有脱机消息的default.htm文件,以及IIS设置的方式default.htm overrode default.asp,所以只需上传default.htm即可更改主页。这当然不会阻止任何人使用任何其他.asp页面。

所以没有真正的答案!遗憾。

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

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

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

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

希望这有帮助。

答案 4 :(得分:0)

优于包含文件,只需使用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"

(双重如果绕过缺少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是不够的。

答案 5 :(得分:0)

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

将app_offline放在根文件夹下。这会奏效。