メッセージインスペクタを実行しているサービスのすべてのエンドポイントにメッセージインスペクタを自動的に追加するカスタムServiceHostを作成しました。私はIDispatchMessageInspectorとIClientMessageInspectorを実装し、すべてのエンドポイントにそれを追加することになっている次のコードを発見したMessageInspectorを作成しました:実行時にWCFメッセージインスペクタを追加する
foreach (ChannelDispatcher channel in this.ChannelDispatchers) {
foreach (EndpointDispatcher endpoint in channel.Endpoints) {
endpoint.DispatchRuntime.MessageInspectors.Add(new MyMessageInspector());
}
}
私はに実行し、問題がのServiceHostが開かれるまでChannelDispatchersコレクションが空であることですつまり、コンストラクタでこのコードを実行することはできません。私は、オープンイベントのイベントハンドラを作成し、そこの代わりにそのコードを使用し、その後私は、エンドポイントを追加しようとすると、次のエラーを取得:
This value cannot be changed after a ServiceHost has been opened
私がキャッチのいくつかの並べ替えに巻き込まだと思えます22、WCF内で可能な機能を探していますか?
おかげで、
マイク