阻止WCF客户端反序列化

时间:2010-01-22 12:22:41

标签: .net wcf performance serialization

我有一个从SOAP Web服务读取的WCF客户端代理。我不控制服务,只控制客户端代理。调用服务的一个操作的结果被定义为一个非常大的XML模式,其中只有一小部分与我的应用程序相关。

我创建了一个自定义WCF行为,它允许我解析原始XML响应并只读取相关部分。但是,代理仍然将响应反序列化为对象图(由于XML模式而非常复杂)。就我的申请而言,最后一步是多余的。

是否可以阻止我的WCF客户端代理执行反序列化响应的最后一步?

3 个答案:

答案 0 :(得分:2)

您想要在哪里处理所需信息的各个部分?一般来说,我觉得你并不真的想要生成默认的客户端代理,而且你最好使用自己的自定义客户端代理。

如果你可以走那条路,一个可用的选项就是让代理返回一个Message对象而不是一个真正的DataContract,然后你可以轻松地从SOAP体中读取原始XML你自己解析它。 imho。

比试图搞乱串行器更容易

答案 1 :(得分:2)

首先使用类似

的操作定义客户端ServiceContract
[OperationContract(Action="YourAction", ReplyAction="YourResponseAction")]
Message YourMethod(Message request)

然后使用generic ClientFactory来实例化代理。

您必须手动构建请求消息并使用单向读取器解析响应。

答案 2 :(得分:1)

我在博客上写到了我最终得到的确切解决方案。所以,为了完整性: