К сожалению, единственный способ узнать, что прокси больше не используется, это попытаться использовать его.
На самом деле вы используете привязку, сессионную (скажем, NetTcpBinding или WSHttpBinding), для которой служба поддерживает ресурсы для клиентского соединения. Если клиент не общается со службой в течение времени, указанного в параметре receiveTimeout службы (по умолчанию 10 минут), сервер решает, что клиент не возвращается, и выбрасывает ресурсы на стороне сервера клиента.
Теперь, когда клиент возвращается и говорит: «Привет, это снова я», сервер говорит: «Я понятия не имею, о чем вы говорите» и сбивает вызов, тем самым убивая прокси клиента
Следовательно, поскольку решение было принято на стороне сервера, клиент не узнает об этом, пока не попытается связаться со службой
Вы можете сделать одно из следующих действий:
- увеличить receiveTimeout на сервере (но это только делает его
займет больше времени, чтобы увидеть проблему)
- использовать привязку, которая не является сессионной (скажем, BasicHttpBinding)
- есть операция ping, которая вызывается клиентом каждые
минут, чтобы служба знала, что она все еще там