7

プラグイン システムを利用する Windows サービスがあります。プラグイン基本クラスで次のコードを使用して、DLL ごとに個別の構成を提供しています (したがって、から読み取られますplugin.dll.config)。

string dllPath = Assembly.GetCallingAssembly().Location;
return ConfigurationManager.OpenExeConfiguration(dllPath);

これらのプラグインは WCF サービスを呼び出す必要があるため、私が直面している問題はnew ChannelFactory<>("endPointName")、ホストされているアプリケーションの App.config でのみエンドポイント構成を検索することです。

ChannelFactory に別の構成ファイルを調べるか、何らかの方法でConfigurationオブジェクトを挿入するように単純に指示する方法はありますか?

これにアプローチする唯一の方法は、読み取った値から EndPoint および Binding オブジェクトを手動で作成し、plugin.dll.configそれらをオーバーロードの 1 つに渡すことChannelFactory<>です。ただし、これはホイールを再作成するように見えますが、動作とバインディング構成を多用する endPoint では非常に面倒になる可能性があります。 おそらく、構成セクションを渡すことで、EndPoint オブジェクトと Binding オブジェクトを簡単に作成する方法があるでしょうか?

4

3 に答える 3

4

プラグインごとに個別の AppDomain を使用します。AppDomain を作成するときに、新しい構成ファイルを指定できます。

http://msdn.microsoft.com/en-us/library/system.appdomainsetup.configurationfile.aspxを参照してください。

于 2011-02-18T20:24:00.820 に答える
0

これが私の2番目の質問に対して見つけた解決策です...誰かがすべてのデータを読み取りServiceModelSectionGroupChannelFactory.

http://weblogs.asp.net/cibrax/archive/2007/10/19/loading-the-wcf-configuration-from-different-files-on-the-client-side.aspx

ただし、はるかにクリーンに見えるため、リチャードのソリューションを使用します。

于 2011-02-18T20:41:26.837 に答える