Я не совсем понимаю ваш вопрос, боюсь, ваше приложение Winforms содержит службу или это клиент, вызывающий службу WCF ??
WCF обычно не использует концепцию постоянной связи между клиентом и сервером.
Клиент создает клиентский прокси-сервер, который вызывает методы, предоставляемые сервером. По сути, каждый вызов не зависит от всех остальных - между клиентом и сервером существует соединение только на время вызова. Соединение не всегда установлено - оно существует только тогда, когда действительно происходит вызов.
Так что я не совсем понимаю, что вы хотите «переподключить» - во-первых, не всегда включено соединение.
Что может произойти, если исключение произойдет на стороне сервера и не будет перехвачено и обработано должным образом, то прокси на стороне клиента может стать недействительным. В терминах WCF «канал» между клиентом и сервером был «поврежден», например, стал непригодным для использования. Если бы вам пришлось снова вызывать сервер с прокси на стороне клиента в неисправном состоянии, вы получите исключение на стороне клиента.
Вы можете проверить состояние неисправного канала на клиентском прокси, прежде чем совершать вызов с помощью этого кода:
if(client.State == CommunicationState.Faulted)
{
client = new YourServiceClient();
}
Если канал действительно неисправен, вам нужно заново создать прокси-сервер, и вы должны вернуться в бизнес.