我将WSDL导入为服务定义(入站到我的服务),无论出于什么原因,客户端正在格式化请求,以至于如果没有具有MessageContract装饰的代理类,WCF就无法反序列化它。
我通过在主容器类上添加MessageContract属性来实现这种方式,这很好,因为WCF将这些类构建为部分类,这意味着我可以修饰我的部分,而不需要处理生成的部分。但是,为了正确地反序列化主容器类上的属性,我必须用指定名称空间的MessageBodyMember属性来修饰它们。
这显然是件坏事,因为这意味着每次从WSDL重新生成时,我都会失去从客户端接收消息的能力。我已经在服务引用配置上设置了“始终生成消息契约”,但这似乎是一个谎言--消息契约是不生成的,不管我是否离开用MessageContract修饰的部分类。
有任何方法可以强制WCF生成这些MessageContract吗?
编辑
我不确定它是否相关,但是当svcutil生成代理类时,它用
[XmlElement(Order=0)]
//Property definition当我添加MessageContract属性时,服务会与消息中断
显式排序不能用于参数或返回值。请从自定义属性中删除Order属性。
在成功调用服务之前,我必须从生成的XmlElement属性中删除所有Order指令。
发布于 2018-05-10 14:19:03
我也发现了类似的东西。我绑定到的服务似乎发出了一个响应,该响应的字段顺序与用于构建引用的WSDL不匹配。
https://stackoverflow.com/questions/3721464
复制相似问题