DLLを参照するWebアプリケーションがあります。このDLLには特定の設定値があり、通常はweb.configの一部です。設定ファイルを動的に切り替える(ウェブまたはアプリの設定)
このDLLは、Webアプリケーションとは異なる設定で呼び出す必要があります。 DLLはサードパーティ製であり、変更することはできません。
以下を試して失敗しました。
- DLL(a.dll、b.dllという名前)のコピーを別に用意し、リフレクションで読み込みます。ここでの問題は、a.dll.configではなくweb.configを探していることです。また、メインプログラムと反射アセンブリで同じタイプが参照されるため、狂ってしまいます。
AppDomain.CurrentDomain.SetData("WEB_CONFIG_FILE", @"Config\Path")
を使用してオンザフライで設定を変更し、通話後にスイッチを元に戻します。ここで問題となるのは、初めてスイッチを切ってもconfigセクションが再びロードされないということです。ConfigurationManager.RefreshSection(@"configuration\mysection")
を使用して強制的にリフレッシュします。これは動作しないと人々はこの呼び出しはバグであると言う.NETで- 私はいくつかの推奨を参照してweb.configを更新したが、これは値の切り替えが起こるため、私にとっては良い選択ではないかもしれませんかなり頻繁に
他に何かできますか?
各呼び出しが新しいインスタンスを作成する場合、out of procは機能します。私のアプリはトラフィックが少ないので、それは問題ではありません。これを試して戻ってきます。しかし、オンザフライで設定を切り替えるようなものには本当の解決策はないということは、イライラしています。 – fozylet
@fozyletでは、構成ごとに異なるclsidを持つ2つの異なる名前のプロセスを作成します。その後、プロセスを再起動することなく、それぞれを再利用することができます。 – Ben