Вопрос десериализации WCF - PullRequest
1 голос
/ 04 августа 2009

У меня проблема с настройкой интеграции веб-службы WCF с третьей стороной. Похоже, что он неправильно десериализует объект ответа, я просто получаю ноль от вызова веб-службы.

Сторонний разработчик использует эту платформу веб-службы, которая имеет большой набор абстрактных и сложных типов для выполнения простых операций. Похоже, что инструменты .NET не генерируют правильный прокси-код для вызова службы, поскольку нам пришлось изменить несколько двумерных массивов на одномерные и исправить другие проблемы, подобные этому в сгенерированном прокси-коде.

Кроме того, сторонняя организация еще не приостановила свою службу, поэтому в настоящее время мы проводим тестирование на фиктивной службе на основе WSDL и XSD с использованием SOAPUI. К счастью, наша третья сторона отправила нам пример SOAP-сообщений, которые они ожидают отправить, поэтому мы можем по крайней мере отослать обратно реальные ответы из фиктивного сервиса. Тем не менее, наша интеграция с WCF, похоже, имеет проблемы с сообщениями / кодом gen.

Я пытался включить System.ServiceModel, System.ServiceModel.MessageLogging и System.Runtime.Serialization tracing (все подробности) в диагностической конфигурации WCF, но я не вижу никаких проблем. Я просмотрел файлы svclog и не вижу никаких подсказок.

Мой вопрос: есть ли способ отладки / отслеживания сериализации / десериализации WCF на крайне низком уровне, например, просмотреть его при разборе XML и попытаться заполнить объект?

1 Ответ

4 голосов
/ 04 августа 2009

Если бы у вас действительно были проблемы с десериализацией, вы бы, вероятно, увидели это в выводе трассировки, но это все еще возможно (все возможно).

Что вы можете попробовать, это вырезать 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 ).

Это определенно не то, что нужно воспринимать легкомысленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...