WCF中“ IsWrapped”属性的用途是什么。在哪种情况下我应该使用此属性,为什么?

最佳答案

Unwrapped Messages (MSDN)
  
  默认情况下,邮件正文的格式设置为,用于包装服务操作的参数。





  MessageContractAttribute.IsWrapped Property (MSDN)
  
  将IsWrapped的值设置为false可以禁止将消息正文序列化到的wrapper元素。


因此,请考虑以下(修剪过的)消息:

<s:Envelope>
  <s:Body>
    <Add>
      <n1>100</n1>
      <n2>15.99</n2>
    </Add>
  </s:Body>
</s:Envelope>


当您将IsWrapped设置为false时,消息正文将不会被包装到具有动作名称(在这种情况下为Add)的元素中:

<s:Envelope>
  <s:Body>
    <n1>100</n1>
    <n2>15.99</n2>
  </s:Body>
</s:Envelope>


诸如此类的属性旨在实现互操作性,例如,在编写客户端以使用不希望消息被包装的服务时。

07-28 00:56