IIS または IIS Express での C#、VS2010、.Net 4.0、ASP.NET サービス。
サービス内でサードパーティのアセンブリを使用しています。このサード パーティのアセンブリには .config ファイルがあり、次のように動的に読み込まれます。
サービス -> MyAssembly1 -> Assembly.Load() を使用して MyAssembly2 を動的にロード -> .config を使用したサード パーティ アセンブリ
私は通常 C++ 開発者であるため、この ASP.NET は私にとってかなり新しいものです。ASP.NET アプリケーションでは、使用するアセンブリが一時 ASP.NET ファイル フォルダーに "シャドウ コピー" されることを理解しています。残念ながら、このサード パーティのアセンブリが "シャドウ コピー" されている場合、.config ファイルはそうではありません。したがって、このアセンブリを使用するときは、.config ファイルを開くことができないため失敗します。
アセンブリ内から、そのアセンブリの CodeBase を取得して .config ファイルを自分で読み込むことができますが、このサード パーティのアセンブリはファイル自体を開く必要があるため、これは役に立ちません。
手動で .config ファイルをシャドウ コピーの場所にコピーすると、うまく機能します。
また、このサードパーティは構成ファイルを「assemblyname.dll.config」ではなく「assemblyname.config」と呼んでいました。
私が得るエラーは次のとおりです。
Unable to load configuration file: "\assemblyname.config".
このサード パーティのアセンブリを ASP.NET 以外のアプリ (通常の Windows アプリ) で使用すると、シャドウ コピーを行わないため、うまく機能します。アセンブリと .config ファイルを exe の場所から直接使用するだけです。
何か案は?これはかなり一般的な問題だと思いますが、解決策を見つけることができませんでした。