Возврат больших данных из службы WCF в веб-службу ASP.NET - PullRequest
0 голосов
/ 03 февраля 2010

Итак, у нас есть консольная служба WCF и ASP.NET WEB-служба (на IIS). После некоторых сложных операций служба WCF должна вернуть некоторые (большие) данные в веб-службу ASP.NET для последующей обработки. Я проверил на небольших результатах, и все в порядке. Но после тестирования реальных данных, представляющих собой сериализованный объект результата размером около 4,5 МБ, происходит ошибка в веб-службе ASP.NET, которая является клиентом в связи wcf-клиент-сервер.

Это ошибка, которую я получил:

Соединение с сокетом было прервано. Это может быть вызвано ошибкой обработка вашего сообщения или превышение времени ожидания удаленный хост или проблема с сетевым ресурсом. Локальный сокет тайм-аут был '04: 00: 00'. Внутреннее исключение: SocketException: «Существующий соединение было принудительно закрыто удаленным хостом "ErrorCode = 10054

Размер сообщений настраивается следующей привязкой (на сервере и клиенте):

NetTcpBinding netTcpBinding = new NetTcpBinding();
netTcpBinding.TransactionFlow = true;
netTcpBinding.SendTimeout = new TimeSpan(0, 4,0, 0);
netTcpBinding.Security.Mode = SecurityMode.None;
netTcpBinding.Security.Message.ClientCredentialType = MessageCredentialType.None;
netTcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
netTcpBinding.Security.Transport.ProtectionLevel = ProtectionLevel.None;
netTcpBinding.MaxReceivedMessageSize = 2147483647;
netTcpBinding.MaxBufferSize = 2147483647;
netTcpBinding.MaxBufferPoolSize = 0;
netTcpBinding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
netTcpBinding.ReaderQuotas.MaxArrayLength = int.MaxValue;
netTcpBinding.ReaderQuotas.MaxBytesPerRead = int.MaxValue;
netTcpBinding.ReaderQuotas.MaxDepth = 32;
netTcpBinding.ReaderQuotas.MaxNameTableCharCount = 16384;

MaxObjectsInGraph свойство сконфигурировано в файле конфигурации.

Что вы можете мне посоветовать? А также мне нужен пример того, как программно установить свойство MaxObjectsInGraph на клиенте и сервере.

Спасибо за ответы.

1 Ответ

0 голосов
/ 04 февраля 2010

Проблема устранена программной установкой MaxObjectsInGraph (для сериализатора) в качестве атрибута службы.

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