2011-09-14 218 views
1

因此,我正在ASP/VBScript中的網站上工作。這些文件需要同時在開發服務器和單獨的QA服務器上運行。不幸的是,開發服務器有一個奇怪的URL,因此爲了使其包含在QA服務器上工作,反之亦然。我嘗試使用此代碼在上頁面的頂部:指向不同的包括取決於該文件在哪個服務器上

<% 
    server = Request.ServerVariables("SERVER_NAME") 

    If (Lcase(Left(server, 3)) == "dev" Then 
     #include virtual ="/dev/Functions/DBConnection.asp" 
     #include virtual ="/dev/Functions/ValidationRoutines.asp" 
    Else 
     #include virtual ="/Functions/DBConnection.asp" 
     #include virtual ="/Functions/ValidationRoutines.asp" 
    End If 
    %> 

我想,這將工作,因爲開發發球dev.website.com並在該服務器需要包括虛擬包括路徑/ dev /目錄。在所有其他服務器(QA,Production)上,應該省略/ dev /目錄,就像在else塊中的include一樣。當我嘗試使用此代碼時,雖然出現錯誤,但頁面無法加載(無法告訴您出現了什麼錯誤,因爲我得到的唯一消息是聯繫系統管理員)。如果我只將這些包含的文件放到適合我試圖運行的服務器上,這個頁面就可以工作,所以這不是問題。

任何幫助,這將不勝感激, 科迪

+0

你可以使用相對路徑,即'<! - #include file =「Functions/DBConnection.asp」 - >'? –

+0

我正在執行的文件包含在dev文件夾內的移動文件夾中。 Functions文件夾也在dev文件夾中。當我嘗試這樣做之前,我不能讓它上升到一個級別,然後回到函數文件夾。雖然我不是ASP真正的經驗,所以如果有辦法做到這一點會有很大幫助。 – Keysmack

回答

0

我相信server是保留字,我也並不認爲你可以加入的文件。經典的ASP也沒有==

更新

以上仍然有效;我已經刪除了代碼示例,因爲@Cheran S正確地指出包含將在任何代碼執行之前被處理,這意味着它在嘗試查找其他文件時會失敗。您必須使用使用#include file而不是#include virtual的相對路徑,或者如果不能,請將這些包含文件移至您網站的根目錄。

+0

這不起作用。包含在任何代碼之前處理,所以此解決方案實際上會嘗試在兩個位置加載文件,並且一個將失敗。 –

0

你不能使#include在這樣的邏輯之內。 ASP甚至在考慮任何邏輯之前,包含所有的#include。因此,在上面的代碼中,服務器將嘗試包含所有這些文件,並引發編譯錯誤。

你可以做

server.execute("somefile.asp") 

,但是這只是要在長期內推出更多的問題給你。

但是,爲什麼不在一臺機器上創建一個名爲'dev'的虛擬目錄呢?這樣你可以規範路徑,而不必擔心這個問題呢?

相關問題