7

これと同様の質問を見ましたが、私の質問は少し異なります。

IIS 7.5 サーバー (R2008 V2) で動作する #include ファイルで断続的な結果が得られます。私のインクルードは、現在の .asp ページと同じフォルダー、または現在のページのサブフォルダーにある場合にのみ機能します。メインページから離れた /lib サブフォルダにすべて保存したいので、これは不便です。

私の構成: DCN という名前のフォルダーがあり、wwwroot フォルダーのすぐ下にあります。DCN フォルダ内の /lib フォルダにはいくつかのファイルがあるため、絶対パスは c:\inetpub\wwwroot\dcn\lib\my_include_file.asp です。DCN フォルダーで ASP ページを開くと、/lib サブフォルダーからインクルード ファイルを取得できます。ただし、DCN/trouble フォルダー (「DCN\Trouble\Search.asp」など) から ASP ページを開くと、search.asp ページに次のような行があります。

<!--#include file="../lib/my_include_file.asp"-->

インクルードが失敗し、500 エラーが発生します。

私も試しました:

<!--#include file="/lib/my_include_file.asp"--> 

同じ結果で。と同じ:

<!--#include file="/DCN/lib/my_include_file.asp"-->

スラッシュをバックスラッシュに変更しましたが、結果は同じでした。私も試してみました:

 <!--#include file="c:\inetpub\wwwroot\dcn\lib\my_include_file.asp"-->

(まったくの絶望から)、それでも同じ結果が得られます。

dcn\trouble フォルダーにサブフォルダーを作成すると、そこからファイルを含めることができますが、これは明らかに理想的ではありません。

どんな提案でも大歓迎です。これは些細なことだと思わずにはいられません。前もって感謝します!

4

3 に答える 3

7

Yots は正しいです。親パスがオフになっているようです。これらをオンにできない場合は、代わりに仮想パスを使用してください。

インクルードファイルが含まれていると述べた質問に基づいて/DCN/lib、次の操作を行います。

<!-- #include virtual="/DCN/lib/my_include_file.asp -->

仮想パスを使用する場合は、ファイルへの完全な仮想パス、つまりサイトのルートから指定する必要があります。これは、XP を使用している開発マシンのサブフォルダーにアプリケーションをビルドしてから、運用マシンのルートにデプロイする場合には理想的ではありません。つまり、Vista または Windows 7 上の IIS7 では、複数のサイトを作成できるようになりました **。

のパス タイプを使用する場合File="..."ファイル名は #include を含むフォルダーへの相対パス上にある必要があります。例えば:

ディレクティブは同じフォルダーから<!-- #include file="my_include.asp" -->インクルードします。my_include.asp

ディレクティブは、スクリプトが実行されている現在のフォルダーの下のフォルダーから<!-- #include file="lib/my_include.asp" -->インクルードします。my_include.asplib

ディレクティブは、スクリプトが実行されている現在のフォルダー (親フォルダー) の上のフォルダーから<!-- #include file="../my_include.asp" -->インクルードします。my_include.asplib

ディレクティブは、親フォルダー (または現在のフォルダーの兄弟) の子であるフォルダーから<!-- #include file="../lib/my_include.asp" -->インクルードします。my_include.asplib

親パスが有効になっていない場合、最後の 2 つの例は機能しません。

** XP の IIS5.1 で複数の IIS サイトを有効にするハックがあることは承知しています。

于 2010-10-15T13:37:39.020 に答える
5

あなたの問題は、IIS で親パスがデフォルトで無効になっていることだと思います。

次の 2 つのオプションがあります。

  1. 仮想パスの使用
  2. IIS で ASP 親パスを有効にする

詳細については、IIS Web サイト
http://learn.iis.net/page.aspx/566/classic-asp-parent-paths-are-disabled-by-default/の記事を参照してください。

于 2010-10-15T08:32:43.427 に答える
4

はどう#include virtualですか?それが読む場合:

#include virtual="\mysite\include\file.inc

file.incmysite の下のインクルード フォルダにあるはずです。親パスを有効または無効にして、約100万回試しました。asp 0126 errorファイルが見つからないというメッセージが引き続き表示されます。私はそれをインクルードファイルに切り替えてそれを見つけることができますが、file.incには他のインクルードがたくさんあり、ファイルまたは仮想をインクルードするように変更してもそれらを見つけることができません。IIS 6 では動作しますが、このサイトを移動する IIS 7 では動作しません。これは、ほとんどすべてがインクルード ファイルで行われる従来の ASP ページです。

私はそのDefault Web site\dept_Sites\mysite場所にマイサイトを持っています。

于 2011-08-30T16:58:08.230 に答える