Разъем был прерван - WCF - PullRequest
       20

Разъем был прерван - WCF

2 голосов
/ 06 сентября 2010

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

Соединение с сокетом было прервано. Это может быть вызвано ошибкой обработки y наше сообщение или тайм-аут приема, превышенный удаленным хостом, или подчиненным проблема с сетевым ресурсом. Тайм-аут локального сокета был '00: 00: 59.9843903 '.

если я использую basicHttpBinding, проблема не возникает.

Кто-нибудь знает, почему возникает эта проблема ??? Спасибо, Liran

1 Ответ

5 голосов
/ 06 сентября 2010

Это ожидаемое поведение.Когда вы закрываете сервер, TCP-соединение на сервере закрывается, и вы больше не можете вызывать его с клиента.Повторный запуск сервера не поможет.Вы должны перехватить исключение на клиенте, прервать текущий прокси и создать и открыть новый.

С BasicHttpBinding это работает, потому что NetTcpBinding использует один канал на протяжении всей жизни прокси (канал связан с TCP-соединением)тогда как BasicHttpBinding создает новый для каждого вызова (он повторно использует существующее HTTP-соединение или создает новое, если соединение не существует).

...