WCF, Сильверлайт:Возможен ли запрос/ответ через PollingDuplexHttpBinding?
-
23-09-2019 - |
Вопрос
Мы использовали PollingDuplexHttpBinding
какое-то время делать Pub/Sub
обмен сообщениями.У нас есть методы, которые не возвращают результаты, которые позволяют клиентам подписаться на некоторый канал данных, а затем служба отправляет данные обратно через CallBack
контракты.
Только что мы добавили несколько Request/Reply
методы для нашего OperationContract
.Поскольку клиентами являются Silverlight 3, эти методы вызываются с использованием async Begin() End()
шаблон.Проблема в том, что мы не можем заставить это работать, используя PollingDuplexHttpBinding
.Мы всегда получаем следующую ошибку (при использовании клиентского стека HTTP):
Сервер не предоставил значимого ответа;это может быть вызвано несоответствием контракта, преждевременным завершением сеанса или внутренней ошибкой сервера.
Используя стек браузера, мы получаем HTTP 500: Not Found.
При переключении на BasicHttpBinding
тот Request/Reply
методы называются совершенно нормально, но очевидно Pub/Sub
методы нельзя использовать с этой привязкой.
Мы могли бы использовать две отдельные конечные точки для каждого типа сообщений, но предпочли бы этого не делать, и мне кажется странным, что привязка будет поддерживать только Pub/Sub
шаблон (хотя это и есть мотивация для PollingDuplexHttpBinding
).
Может ли кто-нибудь прояснить это для меня?Является ли это возможным?
Решение
Нам так и не удалось заставить это работать.Мы используем BasicHttpBinding для всех наших операций запроса/ответа между нашими приложениями Silverlight 4 и нашими службами WCF 4.Это все вызовы асинхронных методов (должны быть с Silverlight) для служб Per-Call.В нескольких ситуациях, когда нам необходимо выполнить отправку данных на сервер, у нас есть служба Sessionful WCF, поддерживающая соединение PollingDuplexHttpBinding с клиентом Silverlight, и мы используем контракты обратного вызова с односторонними методами для выполнения вызовов.
Никогда не мог заставить операции запроса/ответа работать с PollingDuplexHttpBinding, но так и не нашел авторитета по этому вопросу...