如何在启动之后但在上载请求有效负载之前拦截(服务器端)非流式HTTP WCF请求

时间:2016-08-10 21:52:34

标签: c# wcf iis

我有WCF客户端从一些可能很慢的连接发出一些大的HTTP Post请求。我想知道请求的URI和QueryString但在有效负载实际完成上载之前,我想对这些请求做一些服务器端工作。请求是非流式的。

我的理解是IDispatchMessageInspector的AfterReceiveRequest方法在完全接收到请求后被调用,因此无法工作。

这在WCF中是否可行?

1 个答案:

答案 0 :(得分:1)

您已收到邮件,但您仍然可以在AfterReceiveRequest中操作或替换该邮件。

  

消息具有调度程序时调用AfterReceiveRequest   已被接收,由通道堆栈处理并分配给a   服务,但在反序列化并分派到操作之前。   如果传入的消息已加密,则消息已经存在   到达消息检查器时解密。 该方法得到了   请求消息作为参考参数传递,允许   要求检查,操纵或替换的信息

您似乎更喜欢在服务器端执行某些操作,但您也可以实现IClientMessageInspector.BeforeSendRequest,以便在将消息发送到服务器之前对其进行检查和操作。

  

在组成消息时调用BeforeSendRequest   由客户端应用程序或操作格式化程序。 和。一样   调度员消息检查员,消息可以只是检查或   完全取代。

MSDN Documentation