この質問は、もともと VS 2005 で開発され、現在は VS 2008 で開発されている ASP.NET Web サイトに関連しています。
この Web サイトは、.NET ではない 2 つの管理されていない外部 DLL を使用しており、それらをコンパイルするためのソース コードがなく、そのまま使用する必要があります。
この Web サイトは Visual Studio 内から正常に動作し、これらの外部 DLL を正しく見つけてアクセスします。ただし、Web サイトが開発用 PC ではなく Web サーバー (IIS6 および ASP.NET 2.0 を実行) で公開されている場合、これらの外部 DLL を見つけてアクセスすることができず、次のエラーが発生します。
Unable to load DLL 'XYZ.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
外部 DLL は、それらをラップするマネージ DLL および Web サイトの他のすべての DLL とともに、Web サイトの bin ディレクトリにあります。
この問題を検索すると、他の多くの人が ASP.NET Web サイトから外部の非 .NET DLL にアクセスする際に同じ問題を抱えているようですが、うまくいく解決策は見つかりませんでした。
私は次のことを試しました:
- DEPENDS を実行して依存関係を確認し、最初の 3 つがパスの System32 ディレクトリにあり、最後の 3 つが .NET 2 フレームワークにあることを確認します。
- 2 つの DLL とその依存関係を System32 に配置し、サーバーを再起動しましたが、Web サイトはこれらの外部 DLL を読み込めませんでした。
- ASPNET、IIS_WPG、および IUSR (そのサーバー用) に完全な権限を Web サイトの bin ディレクトリに与えて再起動しましたが、Web サイトはこれらの外部 DLL を読み込めませんでした。
- 外部 DLL を既存の項目としてプロジェクトに追加し、それらの [出力にコピー] プロパティを [常にコピー] に設定しましたが、Web サイトはまだ DLL を見つけることができません。
- また、「ビルド アクション」プロパティを「埋め込みリソース」に設定しても、Web サイトはまだ DLL を見つけることができません。
この問題に関するご支援をいただければ幸いです。