У меня есть веб-сервис, который возвращает данные настольному приложению. Проблема, которую я имею, когда веб-сервис возвращает небольшой объем данных, все хорошо работает, но когда объем данных является большим, это выдает следующее исключение:
Система. Сеть. WebException: базовое соединение было закрыто: неожиданная ошибка произошла на получении.
И когда я отлаживаю веб-сервис, я вижу, что этот конкретный метод называют дважды. Это выполняет оператор возврата в 1-й раз, когда ничего не происходит, но когда это действительно выполняет его во второй раз, когда вышеупомянутое исключение выдается в настольном приложении.
Я нашел подобные сообщения прежде на stackoverflow, но они не решили мою проблему. Кто-либо может сказать мне, что продолжается в здесь?
Спасибо!
Это могло произойти из-за того, что размер сообщения больше, чем размер сообщения по умолчанию. Вы можете попробовать увеличить это значение в конфигурации конечной точки. Вы также можете посмотреть этот пост .
ОБНОВЛЕНИЕ:
Для дальнейшей диагностики проблемы я бы посоветовал вам активировать трассировку службы, поместив в файл конфигурации следующее:
<system.diagnostics>
<trace autoflush="true">
</trace>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="sdt"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="WcfDetailTrace.e2e" />
</listeners>
</source>
</sources>
</system.diagnostics>
Это сгенерирует файл трассировки WcfDetailTrace.e2e
который вы можете открыть с помощью Service Trace Viewer Tool , который предоставит вам подробную информацию о вызове и сообщении об ошибке.