我正在导入WSDL作为服务定义(入站到我的服务),并且无论出于何种原因,客户端正在格式化请求,以便WCF无法在没有MessageContract
装饰的代理类的情况下反序列化它。
我已经通过在主容器类上添加MessageContract
属性来实现这一点,这很好,因为WCF将它们构建为部分类,这意味着我可以装饰我的部分并保留生成的部分单独。但是,为了正确反序列化主容器类上的属性,我必须使用指定命名空间的MessageBodyMember
属性来装饰它们。
这显然是一个BadThing®,因为这意味着每次从WSDL重新生成时,我都将失去从客户端接收消息的能力。我已经在服务引用配置上设置了“始终生成消息合同”,但它似乎是一个谎言 - 无论是否将我的部分类设置为MessageContract
,都不会生成消息契约。
有什么方法可以强制WCF生成这些MessageContract
?
修改
我不确定它是否相关,但是当svcutil生成代理类时,它会使用
来修饰属性[XmlElement(Order=0)]
//Property definition
当我添加MessageContract
属性时,服务会中断消息
显式排序不能用于参数或返回值。请从自定义属性中删除Order属性。
在成功调用服务之前,我必须从生成的XmlElement
属性中删除所有Order指令。
答案 0 :(得分:0)
我发现了类似的东西。似乎我绑定的服务是发出一个响应,该响应的字段顺序与用于构建引用的WSDL不匹配。