Я использую WCF для конечной точки мыла, используя режим безопасности "TransportWithMessageCredential".
Клиент/сервер WCF использует SCT (токен Контекста Безопасности) для обеспечения безопасного соединения и работает как обычно в общем случае.
Однако, после периода бездействия, SCT будет истек, а следующий вызов метода вызовет сообщение MessageSecurityException:
От другой стороны был получен необеспеченный или неправильно защищенный отказ. См. Внутреннее исключение FaultException для кода ошибки и подробного описания
Внутреннее исключение:
Сообщение не может быть обработано. Это, скорее всего, потому, что действие " http://tempuri.org/IMyService/MyMethod 'неверно или потому, что сообщение содержит недействительный или истекший токен контекста безопасности или потому, что есть несоответствие между привязками. Токен контекста безопасности был бы недействительным, если служба прервала канал из-за неактивности. Чтобы предотвратить прерывание сеансов бездействия, служба преждевременно увеличивает тайм-аут приема на привязку конечной точки службы.
При последующих вызовах я обновляю соединение, когда вижу, что CommunicationState не работает. Но я не могу найти способ превентивно проверить, закончился ли SCT до вызова метода.