代码之家  ›  专栏  ›  技术社区  ›  Andy White

WCF反序列化问题

  •  1
  • Andy White  · 技术社区  · 16 年前

    我在与第三方建立WCF Web服务集成时遇到问题。似乎它没有正确地反序列化响应对象,我只是从Web服务调用中得到一个空值。

    第三方正在使用这个Web服务框架,它有一组抽象和复杂的类型来执行简单的操作。.NET工具似乎没有生成正确的代理代码来调用服务,因为我们必须将一些二维数组更改为一维数组,并更正生成的代理代码中的其他问题。

    除此之外,第三方还没有停止他们的服务,所以我们目前正在使用soapui对基于WSDL和XSD的模拟服务进行测试。幸运的是,我们的第三方向我们发送了他们希望发送的示例SOAP消息,因此我们至少可以从模拟服务发送真实的响应。但是,我们的WCF集成似乎在消息/代码生成方面存在问题。

    我尝试在wcf诊断配置中启用system.serviceModel、system.serviceModel.messageLogging和system.runtime.serialization跟踪(所有详细级别),但似乎看不到任何问题。我已经搜索了svclog文件,没有看到任何提示。

    我的问题是:是否有任何方法可以在极低的级别调试/跟踪WCF序列化/反序列化,例如查看它解析XML并尝试填充对象?

    1 回复  |  直到 12 年前
        1
  •  4
  •   一二三    14 年前

    如果您确实有反序列化问题,您可能会在跟踪输出中看到它,但它仍然是可能的(任何事情都是可能的)。

    您可以尝试将wcf从公式中删除,并获取它们发送的测试消息之一,然后在测试项目中手动对其进行反序列化。以下是有关如何从文件中执行此操作的信息: http://msdn.microsoft.com/en-us/library/bb675198.aspx

    这可能有点不正统,但它可以帮助您消除序列化问题,或者找到问题的根源。您至少会看到代理正在处理的类是否需要调整。

    现在,如果您必须积极地进入这个过程,那么用您自己的序列化程序替换序列化程序就足够容易了(然后您可以将调试挂钩放在其中): http://www.pluralsight.com/community/blogs/aaron/archive/2006/04/21/22284.aspx (原始链接已断开;镜像自 The Wayback Machine )

    这绝对不是轻而易举的事。