我已經繼承了一個經典的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