WCF: «Не удалось открыть System.ServiceModel.Channels.ClientReliableDuplexSessionChannel» - PullRequest
4 голосов
/ 04 мая 2009

У меня в настоящее время есть служба WCF с контрактом CallBack (дуплекс), и когда я использую приложение, которое использует его на моем компьютере, все работает нормально, но когда я пробую его с другого компьютера, он не подключается .

Эти проблемы начали возникать, когда я переключился на использование этого wsDualHttpBinding (для обратных вызовов), потому что когда я использовал wsHttpBinding, все работало нормально.

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


Что касается журналов, я получаю эти:

альтернативный текст http://img17.imageshack.us/img17/4628/wcfissue.jpg

Операция открытия не завершена в течение выделенного времени 00:01:00. Время, отведенное на это операция могла быть частью длительное время ожидания

Не удалось открыть System.ServiceModel.Channels.ClientReliableDuplexSessionChannel

Faulted System.ServiceModel.Channels.ClientReliableDuplexSessionChannel

Faulted System.ServiceModel.Channels.ServiceChannel

Не удалось открыть System.ServiceModel.Channels.ServiceChannel


На моем маршрутизаторе открыт порт (как TCP, так и UDP), поэтому проблема не в этом.

Что касается атрибутов службы, это то, что я использую:

Интерфейс:

[ServiceContract(Name = "MusicRepo_DBAccess_Service", 
                 CallbackContract = typeof(IOnlineUsersCallback),
                 SessionMode=SessionMode.Required)]

Услуги:

[ServiceBehavior(
        ConcurrencyMode=ConcurrencyMode.Reentrant, 
        InstanceContextMode=InstanceContextMode.Single)]

[Update]

Относительно Orion Edwards 'post:

  • Нет брандмауэра
  • См. Пункт 1
  • Да, я могу, потому что у меня есть порт, перенаправленный на мой маршрутизатор
  • Я использую IIS для размещения сервера.

Дело в том, что эта проблема начала возникать, когда я переключился с wsHttpBinding (который работал нормально) на wsDualHttpBinding (потому что мне требовались обратные вызовы)


[Update]

Я сейчас переключился с wsDualHttpBinding на NetTcpBinding и по какой-то причине все работает нормально.

Я использовал эту статью , чтобы помочь мне настроить хостинг на IIS, и, к счастью, все работает как положено, с обратными вызовами.

Ответы [ 3 ]

2 голосов
/ 09 мая 2009

Я сейчас переключился с wsDualHttpBinding на NetTcpBinding и по какой-то причине все работает нормально.

Я использовал эту статью , чтобы помочь мне настроить хостинг на IIS, и, к счастью, все работает как положено, с обратными вызовами.

1 голос
/ 13 мая 2009

Будет полезно, если вы разместите параметры конфигурации сервера и клиента.

Вот краткое описание того, как работает wsDualHttpBinding из MSDN (выделите мое):

WSDualHttpBinding обеспечивает та же поддержка протоколов веб-службы как WSHttpBinding, но для использования с дуплексные контракты. WSDualHttpBinding поддерживает только безопасность SOAP и требует надежного обмена сообщениями. Это привязка требует, чтобы клиент имел публичный URI, который обеспечивает обратный вызов конечная точка для службы. Это предоставляется clientBaseAddress атрибут. Двойная привязка выставляет IP-адрес клиента для оказание услуг. Клиент должен использовать безопасность, чтобы гарантировать, что это только подключается к сервисам, которым доверяет.

Эта привязка может быть использована для надежно общаться через одного или больше SOAP-посредников.

По умолчанию эта привязка генерирует стек времени выполнения с WS-ReliableMessaging для надежности, WS-Security для защиты сообщений и аутентификация, HTTP для сообщения доставка и текстовое / XML сообщение кодирование.

0 голосов
/ 08 мая 2009

Вещи для проверки:

  • Брандмауэр Windows
  • Брандмауэр вашего антивирусного продукта
  • Можете ли вы подключиться к порту с удаленного компьютера?
  • Работает ли ваш "сервер" под сервером разработки ASP.NET? Это будет принимать запросы только от локальных хостов - вам нужно самостоятельно разместить сервер, используя ServiceHost или разместить его под IIS.
...