У меня в настоящее время есть служба 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, и, к счастью, все работает как положено, с обратными вызовами.