【发布时间】:2008-11-06 15:24:27
【问题描述】:
我正在尝试创建一个 WSTransfer 实现(我意识到 Roman Kiss 已经为 WCF 编写了一个 - 但它实际上并不符合规范)
由于 WSTransfer 是松散耦合的,我最终放弃了服务联系人的数据合同;所以每个创建消息看起来都像 Message Create(Message request)。
这很好用,一切都很好,直到需要回击。
我遇到的问题是构建 WSTransfer 响应的方式。以 create 为例,响应如下所示
<wxf:ResourceCreated>
<wsa:Address>....</wsa:Address>
<wsa:ReferenceProperties>
<xxx:MyID>....</xxx:MyId>
</wsa:ReferenceProperties>
</wxf:ResourceCreated>
如您所见,响应消息中有 3 个不同的 XML 命名空间。
现在,只要有人参与就很容易了;你可以(即使你没有公开它),创建一个数据合约并设置值并将其返回
Message response = Message.CreateMessage(request.Version,
"http://schemas.xmlsoap.org/ws/2004/09/transfer/CreateResponse",
resourceCreatedMessage);
但是在为响应中的子元素设置不同的命名空间时会出现问题;看来 WCF 的数据合同不这样做。即使使用
[MessageBodyMember(Namespace="....")]
响应类中的各个元素似乎没有进行任何更改,所有内容都成为为合同类指定的命名空间的一部分。
那么我如何将不同的命名空间应用于 WCF 消息中的各个元素;是通过合同,还是通过其他一些诡计?
【问题讨论】:
标签: wcf datacontract