Как клиент может попытаться переподключиться к серверу после первой неудачной попытки с WCF? - PullRequest
2 голосов
/ 20 мая 2010

Я использую клиент-серверное приложение. Когда клиент запускается, он получает экран входа в систему. Когда сервер еще не подключен, вызов сервера вызовет исключение, которое я поймаю (EndpointNotFoundException). Я показываю сообщение, сообщающее пользователю, что сервер находится в автономном режиме. Когда он попытается подключиться снова, он выдаст еще одно исключение (CommunicationObjectFaptedException), даже если сервер находится в сети. Когда новый клиент запускается, он может подключиться к серверу. Но клиент, который пытался сделать это раньше, все равно получает ошибку.

Мой вопрос сейчас заключается в том, как первый клиент может войти в систему после неудачной первой попытки, не запуская свою программу заново. Поэтому я хочу очистить канал связи от неисправного состояния или чего-то в этом роде.

Заранее спасибо.

1 Ответ

0 голосов
/ 20 мая 2010

По сути, вы должны вызвать Abort в обработчике EndpointNotFoundException. Здесь - статья, объясняющая причины.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleApplication1.ServiceReference1; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            Service1Client Proxy = null; 
            try 
            { 
                Proxy = new Service1Client(); 
                string res = Proxy.GetData(); 
                Console.WriteLine(res); 
                Proxy.Close();       
            } 
            catch (EndpointNotFoundException)
            { 
                Proxy.Abort(); 
            } 
            Console.ReadKey(true); 
        } 
    } 
}
...