Вопрос

Я использую канал WCF PollingDuplexHttpBinding для отправки уведомлений клиентам Silverlight.По большей части это работает хорошо, но я борюсь с этим, чтобы заставить несколько базовых функций управления сеансами работать должным образом.

Самая большая проблема, с которой я столкнулся, - это попытка сообщить серверу, что клиент завершил сеанс и больше не требует никаких уведомлений.Вызов CloseAsync на клиенте останавливает отправку клиентской стороной канала запросов на получение новых уведомлений только для этого сеанса, а также отправляет SOAP-запрос CloseSession на сервер.Проблема в том, что серверная часть канала отправляет обратно 404 сообщение о том, что он не распознает действие CloseSession .Насколько я могу видеть, эта ошибка исходит из внутренних компонентов канала PollingDuplexHttpBinding и не передается приложению, чтобы можно было должным образом позаботиться о закрытии сеанса.

Кто-нибудь еще сталкивался с этой проблемой и, возможно, нашел способ обойти ее?

Это было полезно?

Решение

Это не может быть сделано по внешнему виду, Жалобы на PollingDuplexHttpBinding.

Другие советы

Что ж, статья gripe была просто потрясающей и косвенно решила связанную с этим проблему, с которой я столкнулся, когда Silverlight работал очень медленно при выполнении дуплекса по HTTP.Как ни странно, проблема вызвана включением ASP.Net Состояния сеанса на веб-сайте и использованием стека BroserHttp Silverlight (вместо стека ClientHttp).

Явор проделывает хорошую работу (в этой статье) по объяснению проблемы:

http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-calls-to-be-slow.aspx

Простое решение, если у вас возникла эта проблема, заключается в регистрации маршрута для стека ClientHttp перед вызовом вашей службы.Это может быть достигнуто простым вызовом:

WebRequest.RegisterPrefix(requestUri.AbsoluteUri, WebRequestCreator.ClientHttp);

Где RequestURI - это Uri вашего сервиса.Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top