Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

CommunicationException-Klasse

Aktualisiert: November 2007

Stellt einen Kommunikationsfehler in der Dienst- oder der Clientanwendung dar.

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

[SerializableAttribute]
public class CommunicationException : SystemException
/** @attribute SerializableAttribute */ 
public class CommunicationException extends SystemException
public class CommunicationException extends SystemException

Robuste Client- und Dienst-Windows Communication Foundation (WCF)-Anwendungen verarbeiten CommunicationException-Objekte, die möglicherweise während der Kommunikation ausgelöst werden. Es gibt auch zwei von CommunicationException abgeleitete Ausnahmetypen (FaultException<TDetail> und FaultException), die häufig von Clients erwartet werden. Um daher zu verhindern, dass der generische CommunicationException-Handler diese spezifischeren Ausnahmetypen abfängt, müssen die Ausnahmen vor der Verarbeitung von CommunicationException abgefangen werden.

  • FaultException<TDetail>-Objekte werden am Client ausgelöst, wenn ein im Vorgangsvertrag angegebener SOAP-Fehler als Antwort auf einen bidirektionalen Vorgang empfangen wird (d. h. eine Methode mit einem OperationContractAttribute-Attribut, bei dem IsOneWay auf false festgelegt ist).

FaultException-Objekte werden ausgelöst, wenn ein Listener einen SOAP-Fehler empfängt, der nicht im Vorgangsvertrag erwartet oder angegeben wird. Dies tritt in der Regel auf, wenn für die Anwendung ein Debugvorgang durchgeführt wird und die IncludeExceptionDetailInFaults-Eigenschaft des Diensts auf true festgelegt wurde.

ms405965.alert_note(de-de,VS.90).gifHinweis:

Beim Implementieren benutzerdefinierter Kanäle und Bindungselemente wird dringend empfohlen, dass Ihre Komponenten nur von System.TimeoutException oder CommunicationException abgeleitete Objekte auslösen. Wenn Ihre Komponenten eine behebbare Ausnahme ausgeben, die spezifisch für die Komponente ist, betten Sie diese Ausnahme in ein CommunicationException-Objekt ein.

Ausführliche Informationen zum Entwerfen und Verwenden des WCF-Fehlersystems finden Sie unter Angeben und Behandeln von Fehlern in Verträgen und Diensten.

Im folgenden Codebeispiel wird ein Client gezeigt, der CommunicationException-Typen verarbeitet. Dieser Client verarbeitet auch FaultException-Objekte, da beim Dienst IncludeExceptionDetailInFaults auf true festgelegt ist.

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();
    try
    {
      // 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:");
      Console.ReadLine();
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      wcfClient.Abort();
      Console.ReadLine();
    }
    // Catch the contractually specified SOAP fault raised here as an exception.
    catch (FaultException<GreetingFault> greetingFault)
    {
      Console.WriteLine(greetingFault.Detail.Message);
      Console.Read();
      wcfClient.Abort();
    }
    // 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
      );
      Console.Read();
      wcfClient.Abort();
    }
    // Standard communication fault handler.
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message + commProblem.StackTrace);
      Console.Read();
      wcfClient.Abort();
    }
  }
}


Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0

.NET Compact Framework

Unterstützt in: 3.5
Anzeigen: