Трудно, почти невозможно (причина ограниченных возможностей SL duplex). мы реализовали список пользователей в нашем сервисе, и мы добавили свойство «IsDisconnected» и LastCommunicationTime, как только сервис WCF получает тайм-аут, когда пытается добавить сообщение в пользовательскую очередь исходящих сообщений, происходит сбой и выдается исключение тайм-аут мы помечаем «IsDisconnecte = true» и в следующий раз не пытаемся отправить сообщение этому пользователю.
Другой поток продолжает смотреть на это, и если он замечает, что LastCommunicationTime превышен значением времени и IsDisconnected = true, он удаляет пользователя из списка, если только тот же пользователь не попытается снова подключиться в течение этого периода времени (который мы идентифицируем по его идентификатору пользователя).
Мы сделали так много вещей, чтобы справиться с этой проблемой вручную, так как служба WCF была очень занята.