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

时间:2011-07-25 20:22:12

标签: c# wcf messagecontract

我正在阅读有关MessageContract& amp; MessageHeader并尝试理解在MessageHeader中发送一些信息的用例,而不仅仅将它用作函数参数?

2 个答案:

答案 0 :(得分:1)

消息合同和消息标题是一些高级概念,大多数人永远不需要使用它们。它们主要用于互操作性场景,您需要与第三方服务进行通信,第三方服务需要特定格式的数据(即标题中的某些参数)。

在邮件头中传递一些参数的其他可能方案:

  • 可以在消息检查器和WCF中的其他扩展点轻松访问标头(因为标头始终是缓冲的),因此如果您想使用其中一些进行某些验证(例如,某些认证决策),您可能需要在标题
  • 中有参数
  • 正如@Vasile所提到的,如果您想要进行流式传输,由于标头始终是缓冲的,因此它们可用于在(流式)主体被读取/使用之前向操作传达一些其他信息

答案 1 :(得分:0)

MessageContract& MessageHeader提供的邮件控制程度低于DataContract&数据成员。如果您使用webHttpBinding或basicHttpBinding,它还提供了一种创建SOAP Headers的方法。 如果您在WCF服务中使用流功能,那么使用MessageHeader是除了流本身之外传递数据的唯一方法。
您可以在此MSDN article

中详细了解邮件合同