2009-09-02 118 views
0

當然必須有一個事件到的ServiceHost或通道或分派器處理消息之前附着到?我假設它可以通過OperationContext.Current訪問,但是我能找到最接近的事件被打開和關閉。有沒有像MessageReceived或BeforeMessageProcessed事件?ServiceHost消息接收事件?

如果不使用事件,有沒有使用WCF類/配置,以確定是否ServiceHost的SingletonInstance正在處理DataContract一些其他的方式?

編輯:IDispatchMessageInspector(AfterReceiveRequest和BeforeSendReply)是完美的。我有大約8個服務,需要知道他們當前正在處理的消息(DataContracts)。儘管可以使用類似於輔助方法的方式來獲取委託並執行BeforeReceive(); InvokeDelegate(); AfterReceive();使用IDispatchMessageInspector和行爲要容易得多。

回答

4

據我所知,還沒有在直接服務主機級別這樣的事件。你能解釋你想要完成什麼嗎?

通常,如果您有任何消息到達時必須完成的處理,那麼正確的方法是使用WCF爲此提供的幾個可擴展點之一,如IDispatchMessageInspector。在這種情況下,你會注入你的消息檢查到通過service or an endpoint behavior的WCF管道。