How to make sure you don't get WCF Faulted state exception?

前端 未结 5 551
鱼传尺愫
鱼传尺愫 2020-12-12 13:09

I am getting this exception:

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication becaus

5条回答
  •  生来不讨喜
    2020-12-12 13:51


    Update:

    This linked answer describes a cleaner, simpler way of doing the same thing with C# syntax.


    Original post

    This is Microsoft's recommended way to handle WCF client calls:

    For more detail see: Expected Exceptions

    try
    {
        ...
        double result = client.Add(value1, value2);
        ...
        client.Close();
    }
    catch (TimeoutException exception)
    {
        Console.WriteLine("Got {0}", exception.GetType());
        client.Abort();
    }
    catch (CommunicationException exception)
    {
        Console.WriteLine("Got {0}", exception.GetType());
        client.Abort();
    }
    

    Additional information

    So many people seem to be asking this question on WCF that Microsoft even created a dedicated sample to demonstrate how to handle exceptions:

    c:\WF_WCF_Samples\WCF\Basic\Client\ExpectedExceptions\CS\client

    Download the sample: C# or VB

    Considering that there are so many issues involving the using statement, (heated?) Internal discussions and threads on this issue, I'm not going to waste my time trying to become a code cowboy and find a cleaner way. I'll just suck it up, and implement WCF clients this verbose (yet trusted) way for my server applications.

提交回复
热议问题