2009-09-02 12 views
0

ServiceHostまたはChannelまたはDispatcherがメッセージを処理する前に、接続するイベントが必要ですか?私はそれがOperationContext.Currentを介してアクセスできると仮定していますが、私が見つけることができる最も近いイベントは、OpeningとClosingです。 MessageReceivedイベントやBeforeMessageProcessedイベントなどがありますか?ServiceHostメッセージ受信イベント?

イベントを使用しない場合、ServiceHost SingletonInstanceが現在DataContractを処理しているかどうかを判断するために、WCFクラス/設定を使用する別の方法がありますか?

EDIT:IDispatchMessageInspector(AfterReceiveRequestとBeforeSendReply)は完璧です。私は約8つのサービスを持っており、現在処理中のメッセージ(DataContracts)を知る必要があります。デリゲートをとり、BeforeReceive()を実行するヘルパーメソッドのようなものを使用することは可能ですが、 InvokeDelegate(); AfterReceive(); IDispatchMessageInspectorとビヘイビアを使用する方がはるかに簡単です。

答えて

4

私が知る限り、このようなイベントは直接サービスホストレベルにはありません。あなたが達成しようとしていることを説明できますか?

通常、メッセージが到着するたびに処理が必要な場合は、IDispatchMessageInspectorのようにWCFが提供するいくつかの拡張ポイントの1つを使用するのが正しい方法です。この場合、メッセージ検査官をservice or an endpoint behaviorを通してWCFパイプラインに挿入します。

関連する問題