2011-06-17 45 views
0

我使用IDisptachMessageInspector掃描WCF服務,然後在BeforeSendReply方法中調用服務操作,這會更改消息的上下文。但是當我打電話給維修人員時,Inspector再次運行。我不想運行督察。你知道有什麼方法可以做到這一點嗎?如何禁用我的條件的MessageInspector

+0

你說的「我叫服務工作在BeforeSendReply」的意思。在您的操作中處理請求後即將發送響應時調用此方法 – 2011-06-17 06:27:01

+0

名稱爲InsertCustomer的客戶端服務方法,並且使用IDispatchMessageInsepector並使用OperationInvoker檢查消息我不調用InsertCustomer並在BeforeSendReply方法我調用SelectCustomer方法。但Inspector再次運行並且發生循環 – 2011-06-17 08:44:45

+0

因此,您試圖根據消息中的某些條件選擇要調用哪個操作? – 2011-06-17 09:01:59

回答

0

答案已被執行IOperationInvoker

0

消息檢查的目的是爲了讓你之前或服務模型層的其餘部分進行處理後修改消息

的操作已經調用後BeforeSendReply被調用,AfterReceiveRequest之前被叫操作被調用。

您看到的行爲是您的消息檢查器在操作後被觸發。然後,您再次發起另一個操作,然後再次調用您的消息檢查器。 BeforeSendReply通常用於處理WCF在使用其默認序列化方式生成時遇到問題的某種格式的響應消息。它無法爲您提供您正在查找的行爲

要決定哪個操作是調用你通常實現一個IDispatchOperationSelector。這個擴展點的具體想法看起來會正是你需要的