This documentation is archived and is not being maintained.

CommunicationException Class

Represents a communication error in either the service or client application.

Namespace:  System.ServiceModel
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

<SerializableAttribute> _
Public Class CommunicationException _
	Inherits SystemException
Dim instance As CommunicationException

Robust client and service Windows Communication Foundation (WCF) applications handle CommunicationException objects that may be thrown during communication. There are also two CommunicationException-derived exception types (FaultException(Of TDetail) and FaultException) that clients also often expect. Therefore, in order to prevent the generic CommunicationException handler from catching these more specific exception types, catch these exceptions prior to handling CommunicationException.

FaultException objects are thrown when a listener receives a SOAP fault that is not expected or specified in the operation contract. This usually occurs when the application is being debugged and the service has the IncludeExceptionDetailInFaults property set to true.


When implementing custom channels and binding elements, it is strongly recommended that your components throw only System.TimeoutException or CommunicationException-derived objects. In the case where your components throw a recoverable exception that is specific to the component, wrap that exception inside a CommunicationException object.

For more details about designing and using the WCF fault system, see Specifying and Handling Faults in Contracts and Services.

The following code example shows a client that handles CommunicationException types. This client also handles FaultException objects because the service has IncludeExceptionDetailInFaults set to true.

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using Microsoft.WCF.Documentation;

public class Client
  public static void Main()
    // Picks up configuration from the configuration file.
    SampleServiceClient wcfClient = new SampleServiceClient();
      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClient.SampleMethod(greeting));
      Console.WriteLine("Press ENTER to exit:");
    catch (TimeoutException timeProblem)
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
    // Catch the contractually specified SOAP fault raised here as an exception. 
    catch (FaultException<GreetingFault> greetingFault)
    // Catch unrecognized faults. This handler receives exceptions thrown by WCF 
    // services when ServiceDebugBehavior.IncludeExceptionDetailInFaults  
    // is set to true. 
    catch (FaultException faultEx)
      Console.WriteLine("An unknown exception was received. " 
        + faultEx.Message
        + faultEx.StackTrace
    // Standard communication fault handler. 
    catch (CommunicationException commProblem)
      Console.WriteLine("There was a communication problem. " + commProblem.Message + commProblem.StackTrace);

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0

.NET Compact Framework

Supported in: 3.5