我正在将 WSDL 作为服务定义(入站到我的服务)导入,并且无论出于何种原因,客户端正在格式化请求,以便 WCF 无法在没有具有MessageContract
装饰的代理类的情况下对其进行反序列化。
通过在主容器类上添加属性,我已经让它以这种方式工作MessageContract
,这很好,因为 WCF 将它们构建为部分类,这意味着我可以装饰我的部分并不理会生成的部分。但是,为了正确反序列化主容器类上的属性,我必须使用MessageBodyMember
指定命名空间的属性来装饰它们。
这显然是一件坏事®,因为这意味着每次我从 WSDL 重新生成时,我都会失去从客户端接收消息的能力。我已经在服务参考配置上设置了“始终生成消息契约”,但这似乎是一个谎言——无论我是否离开我的部分类装饰,都不会生成消息契约MessageContract
。
有什么办法可以强制 WCF 生成这些MessageContract
s?
编辑
我不确定它是否相关,但是当 svcutil 生成代理类时,它用
[XmlElement(Order=0)]
//Property definition
当我添加MessageContract
属性时,服务会因消息而中断
显式排序不能用于参数或返回值。请从自定义属性中删除 Order 属性。
XmlElement
在成功调用服务之前,我必须从生成的属性中删除所有 Order 指令。