У меня есть клиент WCF, разговаривающий с сервером WCF (на той же машине).Мы используем netTcpBinding с безопасностью на уровне сообщений (используя пользовательский PrincipalPermissionMode и пользовательскую реализацию serviceCredentials).Служба помечена InstanceContextMode.PerSession
.
Служба WCF размещена в службе Windows (не в IIS).
Для того чтобы подделать keep-alive, у нас есть Ping
метод, который клиент вызывает каждые 15 секунд.Мы оставляем клиентский прокси открытым в течение всего жизненного цикла клиентской программы (поскольку в нашем случае инициализация сеанса обходится дорого).
Несмотря на это, соединение прерывается через 9 часов, 1 минуту и немного (через 10тестовые запуски, 7 из них умерли после 9h1m6s).
Единственным следствием в журналах WCF является сообщение «SocketConnection aborted», за которым следует различный набор исключений, но обычно включающийисключение "неисправное состояние".
Есть ли какое-то время ожидания в WCF или в TCP / IP, что является причиной этого?Потому что я в тупике.