2012-02-28 2 views
0

У меня есть веб-сервис VB.net, который возвращает JSON, который отлично работает. Однако, когда ответ достигает определенного размера, клиентский браузер говорит, что сервер закрыл соединение и не отправил никаких данных. Это верно при использовании IE, Chrome или Firefox. Магический размер составляет около 16383 записей или около 1,13 МБ данных. Я знаю, что это немного больше для веб-службы, но, пожалуйста, продолжайте это сейчас.Соединение Отбрасывается при отправке большого отклик веб-службы vb.net

Соединение только что закрыто, т.е. не 500 или другая ошибка с сервера. Я также вижу то же поведение в IIS 7.5 и на сервере ASP.net Development из среды IDE.

Использование firebug, fiddler и wirehark все, кажется, показывает, что сервер закрывает соединение.

Поскольку это может произойти в среде IDE с использованием режима отладки, я могу пройти через службу и увидеть, что служба вызывается, вызывается в db, правильно получает все записи и затем выходит из нее нормально. Я также подтвердил, что это не проблема с данными.

Чтобы попытаться проследить, я добавил этот параметров к моему system.web

При запуске веб-сервиса, то Trace.axd показывает результат, как 200, так что, казалось бы, что веб-сервер счастлив, но связь все еще закрывается. Однако эта трассировка не показывает много деталей.

Есть ли какая-либо причина, по которой сервер или клиент будут закрывать соединение следующим образом? Существуют ли какие-либо известные пределы размера ответа с использованием IIS таким образом? Есть ли способ проследить это лучше?

Большое спасибо.

+0

Вы уверены, что этого не сделать, а не таймаут, заставляя его закрыть? – stark

+0

Привет, определенно не время ожидания. 16382 записей работы,> = 16383 нет. И запрос БД выполняется быстро, не более секунды или двух. – user1236775

ответ

1

Я думаю, что у меня это выяснено. То, как я нашел проблему, - это трассировка WCF: msdn.microsoft.com/en-us/library/ms733025.aspx. Это дало мне эту ошибку: максимальное количество элементов, которые могут быть сериализованы или десериализованы в графе объектов, - «65536». Измените график объекта или увеличьте квоту MaxItemsInObjectGraph. Поэтому я сделал то, что он сказал, и поднял MaxItemsInObjectGraph и проблема решена. Я не уверен, как работает математика, хотя 16383 элемента имеют 3 поля, поэтому это должно было быть 49149 объектов, но что угодно. Это позволило решить эту проблему.