WCF何时使用MessageHeader而不是在函数参数中传递变量

本文关键字:参数 函数 变量 何时使 MessageHeader WCF | 更新日期: 2023-09-27 18:03:34

我正在阅读关于messagcontract &MessageHeader并试图理解在MessageHeader中发送一些信息的用例,而不是将其用作函数参数?

WCF何时使用MessageHeader而不是在函数参数中传递变量

消息契约和消息头是大多数人永远不需要使用的高级概念。它们主要用于互操作性场景,在这些场景中,你需要与第三方服务进行通信,而第三方服务需要以某种格式(例如,报头中的一些参数)获取数据。

在消息头中传递某些参数的其他可能场景:

  • 头可以很容易地在消息检查器和WCF中的其他扩展点中访问(因为头总是缓冲的),所以如果您想使用其中的一些来做一些验证(例如,一些身份验证决策),您可能希望在头
  • 中有参数
  • 正如@Vasile所提到的,如果你想有一个流传输,因为头总是缓冲的,它们可以用来在(流)体被读取/消耗之前向操作传递一些额外的信息

messagcontract &MessageHeader提供了比DataContract &数据成员。如果你使用webHttpBinding或basicHttpBinding,它还提供了一种创建SOAP header的方法。如果你在WCF服务中使用流功能,那么使用MessageHeader是除了流本身之外传递数据的唯一方法。
您可以在这篇MSDN文章

中阅读更多关于消息契约的信息。