我在设置与第三方的WCF Web服务集成时遇到问题。它似乎没有正确反序列化响应对象,我只是从Web服务调用中获取null。
第三方正在使用此Web服务框架,该框架具有大量用于执行简单操作的抽象和复杂类型。似乎.NET工具没有生成正确的代理代码来调用服务,因为我们必须将一些二维数组更改为单维,并纠正了生成的代理代码中的其他问题。
最重要的是,第三方还没有提供他们的服务,所以我们目前正在使用SOAPUI测试基于WSDL和XSD的模拟服务。幸运的是,我们的第三方向我们发送了他们期望发送的示例SOAP消息,因此我们至少可以从模拟服务发回实际响应。但是,我们的WCF集成似乎遇到了消息/代码的问题。
我已经尝试在WCF诊断配置中启用System.ServiceModel,System.ServiceModel.MessageLogging和System.Runtime.Serialization跟踪(所有详细级别),但我似乎看不到任何问题。我已经搜索了svclog文件,但没有看到任何提示。
我的问题是:有没有办法以极低的水平调试/跟踪WCF序列化/反序列化,例如:查看它解析XML并尝试填充对象?
答案 0 :(得分:4)
如果你确实遇到反序列化问题,你可能会在跟踪输出中看到它,但它仍然可能(一切皆有可能)。
您可能会尝试将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)。
这绝对不是一件容易接受的事情。