Размер ответа SOAP

Я пытаюсь использовать веб-сервис, который создавался с использованием Soap::Lite (Perl). Я использую сервис, используя C#. По большей части это работает отлично. Я могу захватить ответы и разобрать их, как я считаю нужным. Тем не менее, у меня есть определенные звонки, которые не работают.

Я получаю следующее сообщение: "Существующее соединение было принудительно закрыто удаленным хостом"

Насколько я понимаю, сервер по какой-либо причине прерывает соединение. Я пытаюсь найти эту причину. Я думаю, что это происходит из-за размера деталей некоторых ответов. У меня есть один, который всегда будет терпеть неудачу, и когда я просматриваю XML из ответа SOAP, он всегда усекается в том же месте, как если бы он достиг этого места и достиг предела размера.

Итак, я сделал все, что мог придумать для размера клиента, например, изменил параметры MaxReceivedMessageSize и timeout и т. Д. Я заметил, что могу увеличить тайм-ауты, а время выполнения впоследствии увеличивается, но ведение журнала диагностики выполняется всегда останавливается на одном месте.

Я также написал класс, который позволяет мне просматривать необработанный XML и снова останавливается на том же месте.

Я думаю, может быть, что-то на сервере нужно изменить, но все, что я пробовал, не работает. Служба размещена на веб-сервере под управлением IIS 6.

Есть ли у кого-нибудь предложения о том, что я могу сделать на стороне клиента и / или сервера?

Спасибо

РЕДАКТИРОВАТЬ


Должен отметить, что для меня нет файла WSDL. Приложение, с которым я работаю, - единственный раз, когда я работал с SOAP::Lite, и, насколько я могу судить, оно не генерирует WSDL.

@ e36M3 - Спасибо за предложение. Я никогда не слышал о soapUI. Я установил его и опробовал, и я вижу много вариантов его использования, поэтому буду помнить об этом в будущем. К сожалению, похоже, что он построен на тестировании WSDL, и я не могу понять, как с ним тестировать, не предоставив WSDL, что является проблемой в данной конкретной ситуации.


Вот некоторые из соответствующих данных из моего журнала трассировки. Он начинается там, где заканчивается недействительный xml, и заканчивается информацией об ошибке.

System.Net Verbose: 0: [5772] 000031E0; / map>.System.Net Verbose: 0: [5772] 000031E0>. System.Net Verbose: 0: [5772] 000031E0 esp1: MRWebServic
System.Net Verbose: 0: [5772] 000031E0 es__getIssueDeta
System.Net Verbose: 0: [5772] 000031E0 ilsResponse> System.Net Verbose: 0: [5772] 000031E0 AP-ENV: Body> System.Net Verbose: 0: [5772] 000031E0 AP-ENV: Конверт>
System.Net Verbose: 0: [5772] Выход из ConnectStream#15566556::Read() -> 12880#12880
System.Net Verbose: 0: [5772] ConnectStream # 15566556:: Read ()
System.Net.Sockets Verbose: 0: [5772] Сокет #20784002::Receive()
Ошибка System.Net.Sockets: 0: [5772] Исключение в сокете #20784002::Receive - Попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, так как подключенному хосту не удалось реагировать
System.Net.Sockets Verbose: 0: [5772] Выход из сокета #20784002::Receive() -> 0 # 0
System.Net.Sockets Verbose: 0: [5772] Сокет #20784002::Dispose()
Ошибка System.Net: 0: [5772] Исключение в запросе HttpWebRequest#63722612:: - Основное соединение было закрыто: при получении произошла непредвиденная ошибка. System.Net Verbose: 0: [5772] ConnectStream#15566556:: Закрыть ()
System.Net Verbose: 0: [5772] Выход из ConnectStream#15566556::Close()

1 ответ

В вашей привязке к веб-сервису в app.exe.config должен быть параметр для максимального размера получаемого сообщения. По умолчанию maxReceivedMessageSize="65536". Увеличение значения должно позволить клиентскому приложению получать все данные.

Другие вопросы по тегам