我想在我的 MessageContract 中添加一个新的 MessageBodyMember ,它引用一个新的 Datacontract 。
会有问题吗?。
处理邮件合同更改的最佳方法是什么?。
如何知道添加新的MessageBodyMember是破坏还是不破坏??
答案 0 :(得分:4)
邮件合约版本控制在http://msdn.microsoft.com/en-us/library/ms730255.aspx处理:
有时,您可能需要更改邮件合同。例如,a 新版本的应用程序可能会为邮件添加额外的标头。 然后,当从新版本发送到旧版本时,系统必须 进入时处理额外的标题,以及丢失的标题 另一个方向。
以下规则适用于版本控制标头:
WCF不反对丢失的标题 - 相应的 成员保留其默认值。
WCF还会忽略意外的额外标头。一个例外 如果额外标头的MustUnderstand属性设置为,则此规则是 在传入的SOAP消息中为true - 在这种情况下,抛出异常 因为无法处理必须理解的标题。
邮件正文有类似的版本控制规则 - 缺少和 其他邮件正文部分将被忽略。
这意味着您可以添加和删除MessageBodyMembers,而不会破坏兼容性。更改成员类型时要小心。确保它们被平等序列化以保持兼容。