我正在对传统的经典ASP应用程序进行一些更改。我已在本地进行了更改,现在我想将更改的文件复制到服务器。同时,我需要下载Access数据库,向某些表添加一些字段,然后再次上传。出于这个原因,我需要能够阻止访问者在发生这种情况时修改数据库。
我的主要问题是,设置快速“向下维护”页面的最佳方式是什么,该页面将立即显示,无论访问者请求哪个页面。该应用程序已经建立,所以我宁愿回答不要求我重新修改应用程序的架构。
我的第二个问题(也许这应该是一个单独的问题): 是否有更好的方法将字段添加到db表而不是将其复制,修改并再次粘贴?请原谅,如果这是一个愚蠢的问题 - 我是ASP的新手 - 也是Windows新手。
我只能访问远程服务器。
感谢。
答案 0 :(得分:5)
两种方式:
如果你在每个asp页面中都有一个服务器端包含你可以做一个response.redirect,其中包括/upgrading.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放在根文件夹下。这会奏效。