Wcf callback net tcp duplex only 1 way faailed

У меня есть автономная служба wcf, использующая дуплексный обратный вызов net tcp

на стороне клиента, я прослушиваю сбойное событие на Channel и ChennelFactory. когда канал неисправен, клиент воссоздает канал и повторно подписывается.

на стороне сервера я сохраняю канал обратного вызова и ссылку на канал, вызывая OperationContext.Current.Channel , чтобы я мог прослушивать сбойное и закрытое событие на этом канале. В случае ошибки сервер удалит этого подписчика.

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

Я думал, что при дуплексной связи, если один конец обнаружил неисправность, дуплексный канал должен быть неисправен.

Надежный сеанс включен, и время ожидания очень велико (2 часа) (может быть, это может привести к тому, что клиентская часть не обнаружит ошибку достаточно быстро?)

Может ли кто-нибудь объяснить, почему это происходит?

Другой вопрос: почему он вообще виноват? У меня подключено 40 клиентов, но сервер обнаружил случайного клиента, вышедшего из строя в случайное время.

6
задан Yuan 23 January 2012 в 21:24
поделиться