У меня есть веб-служба .net, размещенная в IIS 6.0, которая периодически выходит из строя с http 500, потому что клиент подключается к нему с данными, которые не соответствуют wsdl.
Такие вещи, как элемент, указанный в методе как тип int, и входящий элемент xml содержит десятичное число.
Определение элемента WSDL:
<s:element minOccurs="1"
maxOccurs="1"
form="unqualified" name="ItemCount" type="s:int" >
предоставленный элемент:
<ItemCount>1.0</ItemCount>
Это оставляет ошибку 500 в журналах iis, но не возвращает информацию о сбое мыла или входных данных, которые вызвали ошибку.
В настоящее время я диагностировал несколько проблем с данными, полученными при захвате всего с помощью wireshark, но я хотел бы знать о других вариантах, которые, возможно, менее навязчивы.
Есть ли способ захвата отправляемых данных, который вызывает 500 ошибок (возможно, ТОЛЬКО захват данных, когда 500 происходит)? Возможно:
- Настройка IIS
- Настройка веб-сервиса
- Изменение кода веб-сервиса
РЕДАКТИРОВАТЬ после тестирования ответ предоставлен tbreffni
Ответ, который лучше всего соответствовал тому, что был у меня после tbreffni - было несколько других хороших ответов, но этот ответ позволяет захватить полезную нагрузку, вызывающую ошибки десериализации, без запуска чего-либо вроде fiddler или wireshark.
Информация о том, как на самом деле запустить расширение SOAP, немного слабовата, поэтому я включил ниже шаги, которые счел необходимыми: