0

在 ServiceHost 或 Channel 或 Dispatcher 处理消息之前,肯定必须附加一个事件吗?我假设它可以通过 OperationContext.Current 访问,但我能找到的最接近的事件是打开和关闭。是否有类似 MessageReceived 或 BeforeMessageProcessed 事件?

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

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

4

1 回答 1

4

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

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

于 2009-09-02T22:36:05.990 回答