クライアントがWOW64を有効にしてIISを実行していて、64ビットDLLを読み込めないと不平を言っています。
これを行う方法はありますか?
また、IISをWOW64で実行すると、すべての.NETコードが32ビットの.NETランタイムで実行されていることを意味しますか?
IISがWoW64で実行される32ビットW3WP.EXEを開始するように構成されている場合、はい、そのワーカープロセス内で発生することはすべて、32ビットモードで発生するため、32ビット.NETランタイムを使用します。
これに対する当然の結果として、64ビットDLLは32ビットプロセスと互換性がないため、ロードできません。DLLの32ビットバージョンを提供する必要があるか、クライアントで32ビットW3WP.exeを無効にする必要があります。
DLLがCOMDLLの場合は、さらにオプションがあります。COM+に登録し、IISアプリからアウトプロセスで実行します。これは、32ビットコードがCOM呼び出しメカニズムを介して64ビットコードを呼び出すことができることを意味します(Windowsが内部で処理します)。
これを変更するIISの設定は、IISの[アプリケーションプール]プロパティの下にあり、[ 32ビットアプリケーションを有効にする]です。trueに設定すると、32ビットワーカープロセスが強制されます。falseに設定すると、64ビットワーカープロセスが有効になります。