У меня есть служба Windows, на которой размещены три разных дуплексных канала WCF. Клиенты могут подключаться, чтобы получать обновления, отправленные им по контракту с обратным вызовом. По сути, есть три паб-суб-канала.
Эта услуга длится долго, когда клиенты подключены. Для вызова ServiceHost.Close
требуется 10 секунд, чтобы вернуться (поэтому остановка службы занимает более 30 секунд.) Оказывается, что мой closeTimeout
в конфигурации составляет 10 секунд. Изменение этого значения означает, что это является причиной проблемы.
Что мне нужно сделать, чтобы быстро закрыть канал? Мне не нравится идея, что время истекает. Я мог бы позвонить Abort
, но, похоже, должен быть лучший способ. Я не видел этого на недуплексных каналах раньше, поэтому предположим, что это как-то связано с дуплексом.
В идеале клиент должен быть немедленно уведомлен о сбое в работе канала, чтобы пользователь мог сразу увидеть, что обновления остановлены.