古いASP.NETのプログラムを、新しい環境でコンパイルして、アプリケーションサーバ(IIS)にデプロイして、テストしたら、下記のエラーが表示された。Visual Studio 2019上では動作している。
ファイルまたはアセンブリ 'xxxxxxxx.DLL'、またはその依存関係の 1 つが読み込めませんでした。 は有効な Win32 アプリケーションではありません。 (HRESULT からの例外:0x800700C1)
問題は、アプリケーションサーバであるIISの設定だった。Windows Server 2019のIIS10は、デフォルトでは64ビットのアプリケーションサーバとして動作する。そのため、32ビットのDLLが混じったアプリケーションを実行するためには、IISの設定で、32ビットのアプリケーションを動作するようにしないといけなかった。
32ビットのアプリケーションを動作するようにするIISの設定方法は下記。
- IISマネージャー(インターネットインフォメーションサーバーマネージャー)を開く。
- アプリケーションプールを選択する。
- 右クリックして、「詳細設定」を開く。
- 全般にある「32ビット アプリケーションの有効化」のプルダウンで、「True」を選択する。
- OKをクリックする
- アプリケーションタスクで、「停止」して「開始」する(たぶん、リサイクルでもOK)

これで、32ビットのアプリケーションも動作するようになる。