我有一个从SOAP Web服务读取的WCF客户端代理。我不控制服务,只控制客户端代理。调用服务的一个操作的结果被定义为一个非常大的XML模式,其中只有一小部分与我的应用程序相关。
我创建了一个自定义WCF行为,它允许我解析原始XML响应并只读取相关部分。但是,代理仍然将响应反序列化为对象图(由于XML模式而非常复杂)。就我的申请而言,最后一步是多余的。
是否可以阻止我的WCF客户端代理执行反序列化响应的最后一步?
答案 0 :(得分:2)
您想要在哪里处理所需信息的各个部分?一般来说,我觉得你并不真的想要生成默认的客户端代理,而且你最好使用自己的自定义客户端代理。
如果你可以走那条路,一个可用的选项就是让代理返回一个Message对象而不是一个真正的DataContract,然后你可以轻松地从SOAP体中读取原始XML你自己解析它。 imho。
比试图搞乱串行器更容易答案 1 :(得分:2)
首先使用类似
的操作定义客户端ServiceContract[OperationContract(Action="YourAction", ReplyAction="YourResponseAction")]
Message YourMethod(Message request)
然后使用generic ClientFactory来实例化代理。
您必须手动构建请求消息并使用单向读取器解析响应。
答案 2 :(得分:1)
我在博客上写到了我最终得到的确切解决方案。所以,为了完整性: