2011-09-14 9 views
1

したがって、ASP/VBScriptのWebサイトで作業しています。これらのファイルは、開発サーバーと別のQAサーバーで同時に動作する必要があります。残念なことに、devサーバーには奇妙な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が果たすので、私はこれがうまくいくことを考え出しはdev.website.comで、仮想はそのサーバー上のパスを含める含める必要があります/ dev /ディレクトリ。他のすべてのサーバー(QA、プロダクション)では、/ dev /ディレクトリは、elseブロックのインクルードのように省略する必要があります。このコードを使用しようとすると、エラーが発生し、ページがロードされません(唯一のメッセージはシステム管理者に連絡するためです)。私がそれを実行しようとしているサーバに適切なインクルードを入れるだけなので、問題はありません。

これで任意の助けをいただければ幸いです、 コーディ

+0

相対パス、つまり '<! - #include file =" Functions/DBConnection.asp " - >'を使用できますか? –

+0

私がインクルードしているファイルは、devフォルダ内にあるモバイルフォルダにあります。関数フォルダはdevフォルダ内にもあります。私がそれをレベルアップしてから関数フォルダに戻すことができないうちに、やり遂げようとするとそのようになります。私はASPで経験豊かではありませんので、それを行う方法があれば、多くの助けになります。 – Keysmack

答えて

0

私はserverが予約語であると考えていると私はまた、あなたがそのようなファイルを含めることができるとは思いません。従来のASPには==もありません。

更新

上記はまだ立っています。 @Cheran Sは、コードが実行される前にインクルードが処理されることを正しく示しているため、コードサンプルを削除しました。つまり、他のファイルを見つけようとすると失敗します。 #include virtualの代わりに#include fileを使用して相対パスを使用するか、できない場合は、それらのインクルードファイルをサイトのルートディレクトリに移動する必要があります。

+0

これは動作しません。インクルードはコードよりも前に処理されるため、このソリューションは実際に両方の場所でファイルをロードしようとしますが、1つは失敗します。 –

0

#includeをそのようなロジックの中に作ることはできません。 ASPロジックの前にすべての#が含まれているかどうかも考慮します。上のコードでは、サーバーはそれらのファイルをすべてインクルードしようとし、コンパイルエラーをスローします。

あなたは

server.execute("somefile.asp") 

を行うことができ、それはただ長期的にはあなたのためのより多くの問題を引き起こすだろう。

しかし、別のパスではなく、1台のマシンに「dev」という仮想ディレクトリを作成するのはなぜですか?あなたはパスを標準化することができ、この問題をまったく心配する必要はありません。

関連する問題