Клиент WCF немедленно выходит из строя - PullRequest
0 голосов
/ 26 июля 2010

У меня есть следующий код для воссоздания клиента WCf в неоткрытом состоянии

if (client.State != CommunicationState.Opened)
{
   client.Abort();

   client = null;

   Trace.WriteLine("Client object in non opened state. Recreating object");

   client = new <WCFClient>("NetTcpBindingEndpoint", ConfigurationManager.AppSettings["ServiceEndPointAddress"]);

   client.Open();
}

По какой-то причине, как только эта процедура возвращается и я пытаюсь вызвать client.Somemethod(), я получаюисключение, и когда я ловлю его, я вижу клиента в неисправном состоянии.Я не понимаю, как это произошло так быстро.

Спасибо за любую помощь заранее.

Subbu

1 Ответ

0 голосов
/ 26 июля 2010

Можете ли вы показать нам, когда вы пытаетесь позвонить client.SomeMethod()?

Я не вижу, чего вы пытаетесь достичь с помощью client.Open() здесь ....., который на самом деле не имеет никакого смысла - просто вызовите метод, который вы хотите вызвать!

try
{          
    var client = new <WCFClient>("NetTcpBindingEndpoint", ConfigurationManager.AppSettings["ServiceEndPointAddress"]);

    client.SomeMethod();
    client.Close();
}
catch(FaultException<T> exc)
{
   // handle it
    client.Abort();
}
catch(CommunicationException exc)
{
   // handle it
    client.Abort();
}
catch(EndpointNotFoundException exc)
{
   // handle it
    client.Abort();
}
catch(TimeoutException exc)
{
   // handle it
    client.Abort();
}

и, возможно, добавьте немного магии try.....catch, чтобы сделать его более безопасным ... но это действительно все, что вам нужно - нет необходимости сначала .Open() клиента .....

...