2011-09-14 189 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'的虚拟目录呢?这样你可以规范路径,而不必担心这个问题呢?

相关问题