XP Pro SP3 の IIS で CGI アプリケーションとして実行されている C# プログラムがあります。ライブラリ アセンブリ クラスを参照してプログラムのコードで使用するまでは、正常に動作します。CGI プログラムを手動で実行すると、読み込まれて実行されます。しかし、IIS によって実行されると、参照されたアセンブリは、親の実行可能ファイルと同じディレクトリにあるにもかかわらず、バインドに失敗します。これが私が得るバインディングログです:
=== プレバインド状態情報 === ログ: ユーザー = STEVIENEW\IUSR_STEVIENEW ログ: DisplayName = VOEvent、バージョン = 3.0.7.0、カルチャ = ニュートラル、PublicKeyToken = null (完全指定) ログ: Appbase = file://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/ ログ: 初期 PrivatePath = NULL アセンブリの呼び出し: MsgChkCGI、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null。 === ログ: このバインドはデフォルトのロード コンテキストで開始されます。 ログ: アプリケーション構成ファイルが見つかりません。 ログ: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config のマシン構成ファイルを使用しています。 ログ: 現時点ではポリシーが参照に適用されていません (プライベート、カスタム、部分、または場所に基づくアセンブリ バインド)。 ログ: 新しい URL ファイルのダウンロードを試みています://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/VOEvent.DLL. ログ: 新しい URL ファイルのダウンロードを試みています://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/VOEvent/VOEvent.DLL. ログ: 新しい URL ファイルのダウンロードを試みています://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/VOEvent.EXE. ログ: 新しい URL ファイルのダウンロードを試みています://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/VOEvent/VOEvent.EXE.
Appbase は正しいです (ただし、URI の「?」は何ですか????? おそらくそれがヒントです)。アセンブリ voevent.dll は、MsgChkCGI.exe と同じディレクトリ (Appbase!) にあります。そして、exeをダブルクリックするだけで、正しく起動します(CGI環境変数がないためにエラーが発生しますが、これは予想どおりです)。
何が起こっているか知っている人はいますか?