4

64 ビット プロセスで実行することになっている大規模な Web アプリケーションがあります。ただし、アプリ プールで [32 ビット アプリケーションを有効にする] を False に設定すると、IE でアプリを実行しようとすると、次のエラーが表示されます。

は有効な Win32 アプリケーションではありません。(HRESULT からの例外: 0x800700C1)

エラー メッセージの先頭にあるアプリケーション名がありません。つまり、コピー アンド ペースト中に失われていません。

Process Monitor を使用して、どのアプリケーション/DLL ロードが実際にエラーを引き起こしているかを判断するようにアドバイスされましたが、どこから始めればよいかわかりません。誰かアドバイスしてくれませんか?

編集: w3wp.exe のみ、ファイル システムとプロセス イベントのみで Process Monitor をフィルタリングしようとしましたが、単にルート URL に移動しようとすると、34,012 のイベントが発生します。

4

2 に答える 2

1

x64 専用にビルドされたコンソール アプリケーションを作成し、それを使用して、参照されているすべての dll を 1 つずつ動的にロードし、ロード間のコンソール出力を使用します。コンソール アプリケーションが dll の 1 つをロードできなかった場合、それがどれであるかがわかります。

于 2011-03-09T14:32:25.140 に答える
0

これは ASP.Net アプリケーションだと思います。メイン Web プロジェクトのプラットフォーム ターゲットを x86 に設定しましたか。

この設定は、[プロジェクトのプロパティ] | [プロジェクトのプロパティ] にあります。ビルド | プラットフォーム ターゲット

また、サードパーティのライブラリを参照しているプロジェクトはありますか? もしそうなら、それらが32ビットか64ビットのDLLか知っていますか?

于 2011-03-09T07:47:14.240 に答える