【问题标题】:ServiceHost message receive event?ServiceHost 消息接收事件?
【发布时间】:2018-12-30 00:00:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wcf web-services servicehost


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多