Отправка больших сообщений с сервера на клиент с помощью pollingDuplexHttpBinding - PullRequest
1 голос
/ 13 марта 2012

Во-первых, я хотел бы попросить теорию, потому что я не нашел никакой соответствующей документации: у нас есть клиент Silverlight и служба WCF. Связь между ними осуществляется через pollingDuplexHttpBinding. Предположим, что сервер хочет отправить клиенту сообщение, размер которого больше, чем установлено MaxBufferSize и MaxReceivedMessageSize. Что происходит за кулисами в этом случае?

Теперь вот мой реальный опыт с этой проблемой: Конфигурация привязки на стороне сервера:

<binding name="eventServiceBinding" sendTimeout="00:00:10" inactivityTimeout="24:00:00" receiveTimeout="24:00:00" serverPollTimeout = "00:01:00"/>

Отправляет большое (т.е. больше, чем значение, установленное в свойствах привязки клиента, как описано выше) сообщение с сервера клиенту. Затем отправьте второе (не большое) сообщение => Я получил время ожидания для второго сообщения (я не знаю, получал ли клиент первое сообщение). Я попытался найти некоторые полезные записи, чтобы увидеть, что происходит с первым сообщением. Сделано это как на стороне сервера (путем активации регистратора WCF), так и на стороне клиента (с помощью Fidler). В журнале я не нашел ничего по-настоящему интересного (но, возможно, я не искал в нужных местах).

Более того - когда sendTimeout имеет большое значение (скажем, 10 минут), похоже, что все дополнительные сообщения, отправленные с сервера на клиент, «застряли» - никогда не принимаются клиентом, и никакие исключения не генерируются до истечения времени ожидания отправки , Кроме того, я испытываю странное явление, при котором не происходит никакой связи между любым клиентом и какой-либо службой, предоставляемой приложением IIS хостинга, - пока я не перезагружу IIS. Я не уверен на 100%, что это связано с предыдущей проблемой, описанной здесь.

Установка свойств MaxBufferSize и MaxReceivedMessageSize в привязке на стороне клиента, похоже, решает обе проблемы.

Пожалуйста, дайте мне знать, если у вас есть какой-либо опыт с такой проблемой и можете ли вы рассказать, что на самом деле происходит за кулисами в WCF здесь.

...