2

我正在将 WSDL 作为服务定义(入站到我的服务)导入,并且无论出于何种原因,客户端正在格式化请求,以便 WCF 无法在没有具有MessageContract装饰的代理类的情况下对其进行反序列化。

通过在主容器类上添加属性,我已经让它以这种方式工作MessageContract,这很好,因为 WCF 将它们构建为部分类,这意味着我可以装饰我的部分并不理会生成的部分。但是,为了正确反序列化主容器类上的属性,我必须使用MessageBodyMember指定命名空间的属性来装饰它们。

这显然是一件坏事®,因为这意味着每次我从 WSDL 重新生成时,我都会失去从客户端接收消息的能力。我已经在服务参考配置上设置了“始终生成消息契约”,但这似乎是一个谎言——无论我是否离开我的部分类装饰,都不会生成消息契约MessageContract

有什么办法可以强制 WCF 生成这些MessageContracts?

编辑

我不确定它是否相关,但是当 svcutil 生成代理类时,它用

[XmlElement(Order=0)]
//Property definition

当我添加MessageContract属性时,服务会因消息而中断

显式排序不能用于参数或返回值。请从自定义属性中删除 Order 属性。

XmlElement在成功调用服务之前,我必须从生成的属性中删除所有 Order 指令。

4

1 回答 1

0

I've found something similar. It seems that the service that I was binding to is issuing a response that had fields in an order that does not match the WSDL used to build the reference.

于 2018-05-10T14:19:03.143 回答