2009-09-02 82 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管道。