在ServiceHost或Channel或Dispatcher处理邮件之前,必定要附加事件?我假设它可以通过OperationContext.Current访问,但我能找到的最接近的事件是打开和关闭。有没有MessageReceived或BeforeMessageProcessed事件?
如果没有使用事件,是否有其他方法使用WCF类/配置来确定ServiceHost SingletonInstance当前是否正在处理DataContract?
编辑:IDispatchMessageInspector(AfterReceiveRequest和BeforeSendReply)是完美的。我有大约8个服务,需要知道他们当前正在处理什么消息(DataContracts)。虽然可以使用类似辅助方法的方法来接受委托并执行BeforeReceive(); InvokeDelegate(); AfterReceive();使用IDispatchMessageInspector和行为要容易得多。
答案 0 :(得分:4)
据我所知,服务主机级别没有直接发生此类事件。你能解释一下你想要完成什么吗?
通常情况下,如果您有任何必须在消息到达时进行的处理,那么正确的方法是使用WCF为此提供的几个可扩展点之一,如IDispatchMessageInspector。在这种情况下,您将通过service or an endpoint behavior将消息检查器注入WCF管道。