Тайм-ауты клиента Silverlight4 при длительных вызовах WCF - PullRequest
0 голосов
/ 16 ноября 2010

Привет! У меня проблема с тайм-аутом клиента Silverlight. Попытка использования опций

TimeSpan getSessionMapTimout = new TimeSpan(0, 20, 0);

Client.Endpoint.Binding.CloseTimeout = getSessionMapTimout;
Client.Endpoint.Binding.ReceiveTimeout = getSessionMapTimout;
Client.Endpoint.Binding.SendTimeout = getSessionMapTimout;
Client.Endpoint.Binding.OpenTimeout = getSessionMapTimout;
Client.InnerChannel.OperationTimeout = getSessionMapTimout;

, включая InnerChannel.OperationTimeout. Ни одна из них не работает с клиентом Silverlight в течение 30 секунд.

Интересная вещьэто настройки регестрации IE "ReceiveTimeout"=dword:00007530, кажется, переопределяет настройки клиента Silverlight, потому что, если я удаляю это из реестра, все работает нормально.

Как заставить эти тайм-ауты работать с помощью в Silverlight и переопределить настройки реестра IE.

Ответы [ 3 ]

0 голосов
/ 18 ноября 2010

Какую привязку вы используете? Я использую привязку Duplex по часам / дням одновременно, и это не проблема.

Вы проверяли время ожидания на стороне сервера? Также необходимо учесть время ожидания соединения ASP.NET (по умолчанию оно установлено равным 30 с или около того).

0 голосов
/ 06 января 2011

Я обнаружил, что при использовании клиентского стека вне IE (в режиме вне браузера) запросы, которые занимают более 10 секунд, не выполняются с ArgumentNullException, исходящим от HttpWebRequest.EndGetResponse (). Из того, что я видел в Интернете, другие люди также испытывали это в Firefox и Chrome, но в IE это, кажется, работает нормально (предположительно, это ждет бесконечно, и вы можете свернуть свой тайм-аут).

Я не верю, что в стеке клиента есть API для установки времени ожидания.

0 голосов
/ 17 ноября 2010

Вам нужно использовать стек HTTP-клиента в Silverlight, если вам нужно увеличить время ожидания.Стандартный стек браузера, который использует Silverlight, имеет тайм-аут, установленный браузером, и вы не можете им манипулировать.

HttpWebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);

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

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