我已经继承了一个经典的ASP应用程序。有各种各样的东西需要整理,但我被迫逐渐做事(我无法对每个脚本进行大规模的更改)。用经典ASP区分测试和生产的最佳方法
系统中有硬编码的网址。有些脚本在升级之前必须更改,以便将测试Web根名称更改为活动Web根名称。我正在寻找方法来避免这种情况(主要是以编程方式编译服务器)。
这并不困难。一个简单的检查请求(“SERVER_NAME”)和这样的事情:
appName = Request.ServerVariables("SCRIPT_NAME")
i = InStr(2, appName, "/") 'keep initial "/"
If i > 0 Then
appName = Left(appName, i)
End If
这在一个“无处不在”的脚本将做的伎俩。然后设置一个全局变量来保存完整的“http:// server/app /”或一个函数MakeUrlAbsolute(),然后关闭你。
但是,这有点让我怀疑。这不会更好地存储在应用程序级别吗?这表明,设置它Global.asa中,是这样的:
Sub Application_OnStart()
Application("WebRoot") = ...
End Sub
但现在,所以我减少到具有2个不同的Global.asa文件(每个环境中的一个),我不能让SERVER_NAME的保持。
这是我唯一的选择吗?在Application_OnStart中的每个请求或硬编码上解决它? 也许使用Session_OnStart会是一个妥协。还是有一些聪明的技巧来访问Application_OnStart中的信息?也许人们使用硬编码,因为Global.asa不会经常更改。
我会说你的开发和生产服务器单独的global.asa文件是一个非常标准的方法。例如,我总是将连接字符串存储为应用程序变量,并在需要连接到数据库时使用Application(“dbcconn”) – John