ServiceHost消息接收事件?

时间:2009-09-02 22:14:22

标签: c# wcf web-services servicehost

在ServiceHost或Channel或Dispatcher处理邮件之前,必定要附加事件?我假设它可以通过OperationContext.Current访问,但我能找到的最接近的事件是打开和关闭。有没有MessageReceived或BeforeMessageProcessed事件?

如果没有使用事件,是否有其他方法使用WCF类/配置来确定ServiceHost SingletonInstance当前是否正在处理DataContract?

编辑:IDispatchMessageInspector(AfterReceiveRequest和BeforeSendReply)是完美的。我有大约8个服务,需要知道他们当前正在处理什么消息(DataContracts)。虽然可以使用类似辅助方法的方法来接受委托并执行BeforeReceive(); InvokeDelegate(); AfterReceive();使用IDispatchMessageInspector和行为要容易得多。

1 个答案:

答案 0 :(得分:4)

据我所知,服务主机级别没有直接发生此类事件。你能解释一下你想要完成什么吗?

通常情况下,如果您有任何必须在消息到达时进行的处理,那么正确的方法是使用WCF为此提供的几个可扩展点之一,如IDispatchMessageInspector。在这种情况下,您将通过service or an endpoint behavior将消息检查器注入WCF管道。