我使用svcutil生成调用WSE2 Web服务的wcf代理。
当Web服务作者更改代理中字段的顺序时,问题就出现了。
我检查了生成的代理,发现公共属性是用XmlElementAttribute(Order = 0)装饰的。订单= 1,等等。
有没有办法生成在Web服务发生变化后仍能正常运行的WCF代理?
因为现在我需要重新生成代理并重新编译。
答案 0 :(得分:0)
您可以手动更改生成的文件,如果更改的唯一内容是字段的顺序,这可能是最佳解决方案。但是你必须重新编译。
否则,您可以使用渠道工厂来创建渠道,但您仍需要更改数据合同=>你将不得不重新编译。
将代理保留在单独的程序集中?
答案 1 :(得分:0)
svcutil生成的基本普通代理将使用DataContractSerializer,它使用这些Order = x属性。
如果您愿意,您也可以使用直接XmlSerializer,它不会使用Order = x属性装饰您的属性。
使用:
svcutil ........ /serializer:XmlSerializer
实现这一目标。
马克