サービスがリッスンするIPとポート番号を含め、WCFサービスのユーザー構成を許可しようとしています。ユーザーはこれらの値を設定できる別の構成アプリケーションを持っていますが、私が直面している問題は、新しいServiceHostエントリを作成するためにapp.configにエンドポイントを定義する必要があることです...しかし私のエンドポイントは別の構成ファイルで定義され、実行時にプログラムでバインドする必要があります。
次のことを行うと( WCF app.configエンドポイントアドレス設定をプログラムで変更する方法に基づいていますか? :
m_SvcHost = new ServiceHost(this);
if (Config.ServiceEndpoint != null && Config.ServiceEndpoint != String.Empty)
{
m_SvcHost.AddServiceEndpoint(typeof(IMyService),
new BasicHttpBinding(),
Config.ServiceEndpoint);
}
m_SvcHost.Open();
サービスは、app.configで定義されたURIと構成ファイルで定義されたURIの両方でリッスンします。元のエンドポイントを削除したり、エンドポイントを定義せずにサービスを作成したりする方法はありません。
構成アプリケーションからapp.configに書き込むことはオプションではありません。構成された値を、別のXML構成ファイルからプログラムでプルする必要があります。
何かご意見は?
編集:サービスはWindowsサービスとして実行され、HTTPエンドポイントを公開しますが、IISでホストされているWebサービスとしては実行されていません-それによって状況がまったく変わる場合