ローカルで非常にうまく動作する C# アプリケーションを開発しました。
しかし、サーバーに置くときに問題があります。
アプリケーションは、参照 (A.dll) で DLL ライブラリを使用し、実行の時点で、A.dll は Temp ディレクトリに別の DLL (埋め込まれているので、B.dll と呼びましょう) を作成します。しかし、A.dll が B.dll をロードしようとすると、例外がスローされます。
system.invalidoperationexception: failed to load B.dll
私はDLLのソースにアクセスしていませんが、ライブラリです。
要約すると、次のようになります。
- プロセスには、ファイルとパスに対するフル コントロール権限があります。(チェック済み)
- 管理者として実行しています。(チェック済み)
- 私のアプリケーションでは、dll をバイナリ モードで開こうとしても、操作に問題はありません。
- テストしたすべての OS (Windows 8_64 / XP_32 / 2008_32 / 7_64) で問題なく動作しますが、2008 R2 64 では失敗します。
- B.DLL の再ダウンロード、名前の変更、再インストールを試みましたが、B.DLL と同じパスにプログラムを配置しましたが、結果はありませんでした。
したがって、この時点で、「プロセスがDLLを読み込めません」など、サーバーのセキュリティ上の問題だと思います。
例外: http://i.imgur.com/NmB2Fth.png?1
誰でも解決策を提案できますか?私はよくチェックしますか?どこ?
PS DLL を登録しようとすると、次の同じエラーが表示されます: Register DLL file on Windows Server 2008 R2