Поделиться через


CommunicationException Класс

Определение

Представляет ошибку связи в службе или клиентском приложении.

public ref class CommunicationException : Exception
public ref class CommunicationException : SystemException
public class CommunicationException : Exception
[System.Serializable]
public class CommunicationException : SystemException
type CommunicationException = class
    inherit Exception
[<System.Serializable>]
type CommunicationException = class
    inherit SystemException
Public Class CommunicationException
Inherits Exception
Public Class CommunicationException
Inherits SystemException
Наследование
CommunicationException
Наследование
CommunicationException
Производный
Атрибуты

Примеры

В следующем примере кода показан клиент, обрабатывающий CommunicationException типы. Этот клиент также обрабатывает FaultException объекты, так как служба имеет IncludeExceptionDetailInFaults значение 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();
    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();
    }
  }
}

Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports Microsoft.WCF.Documentation

Public Class Client
  Public Shared Sub Main()
    ' Picks up configuration from the configuration file.
    Dim wcfClient As New SampleServiceClient()
    Try
      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
      Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClient.SampleMethod(greeting))
      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()
    Catch timeProblem As TimeoutException
      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 greetingFault As FaultException(Of 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 faultEx As FaultException
      Console.WriteLine("An unknown exception was received. " & faultEx.Message + faultEx.StackTrace)
      Console.Read()
      wcfClient.Abort()
    ' Standard communication fault handler.
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message + commProblem.StackTrace)
      Console.Read()
      wcfClient.Abort()
    End Try
  End Sub
End Class

Комментарии

Надежные клиентские и служебные приложения Windows Communication Foundation (WCF) обрабатывают CommunicationException объекты, которые могут возникать во время взаимодействия. Существует также два CommunicationExceptionпроизводных типа исключений (FaultException<TDetail> и FaultException), которые клиенты также часто ожидают. Поэтому для предотвращения перехвата этих более конкретных типов исключений универсальный CommunicationException обработчик перехватывает эти исключения до обработки CommunicationException.

  • FaultException<TDetail> объекты создаются на клиенте, когда ошибка SOAP, указанная в контракте операции, получается в ответ на двусторонняя операция (то есть метод с атрибутом OperationContractAttribute с IsOneWay заданным значением false).

FaultException объекты возникают, когда прослушиватель получает ошибку SOAP, которая не ожидается или указана в контракте операции. Обычно это происходит при отладке приложения, а служба имеет IncludeExceptionDetailInFaults значение trueсвойства.

Замечание

При реализации пользовательских каналов и элементов привязки настоятельно рекомендуется создавать только System.TimeoutException или CommunicationExceptionпроизводные от компонентов объекты. В случае, когда компоненты вызывают восстанавливаемое исключение, относящееся к компоненту, заключите это исключение внутри CommunicationException объекта.

Дополнительные сведения о проектировании и использовании системы сбоя WCF см. в разделе "Указание и обработка ошибок в контрактах и службах".

Это важно

Среда выполнения WCF не создает небезопасную CommunicationException обработку в точке, когда она покидает среду выполнения WCF и вводит пользовательский код.

Конструкторы

Имя Описание
CommunicationException()

Инициализирует новый экземпляр класса CommunicationException.

CommunicationException(SerializationInfo, StreamingContext)

Инициализирует новый экземпляр CommunicationException класса, используя указанные сведения о сериализации и объекты контекста.

CommunicationException(String, Exception)

Инициализирует новый экземпляр CommunicationException класса, используя указанное сообщение и внутреннее исключение.

CommunicationException(String)

Инициализирует новый экземпляр CommunicationException класса, используя указанное сообщение.

Свойства

Имя Описание
Data

Возвращает коллекцию пар "ключ-значение", которые предоставляют дополнительные пользовательские сведения об исключении.

(Унаследовано от Exception)
HelpLink

Возвращает или задает ссылку на файл справки, связанный с этим исключением.

(Унаследовано от Exception)
HResult

Возвращает или задает HRESULT, закодированное числовое значение, назначенное определенному исключению.

(Унаследовано от Exception)
InnerException

Возвращает экземпляр Exception, вызвавшего текущее исключение.

(Унаследовано от Exception)
Message

Возвращает сообщение, описывающее текущее исключение.

(Унаследовано от Exception)
Source

Возвращает или задает имя приложения или объекта, вызывающего ошибку.

(Унаследовано от Exception)
StackTrace

Возвращает строковое представление непосредственных кадров в стеке вызовов.

(Унаследовано от Exception)
TargetSite

Возвращает метод, который вызывает текущее исключение.

(Унаследовано от Exception)

Методы

Имя Описание
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetBaseException()

При переопределении в производном классе возвращает Exception, которая является основной причиной одного или нескольких последующих исключений.

(Унаследовано от Exception)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetObjectData(SerializationInfo, StreamingContext)
Устаревшие..

При переопределении в производном классе задает SerializationInfo с информацией об исключении.

(Унаследовано от Exception)
GetType()

Возвращает тип среды выполнения текущего экземпляра.

(Унаследовано от Exception)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Создает и возвращает строковое представление текущего исключения.

(Унаследовано от Exception)

События

Имя Описание
SerializeObjectState
Устаревшие..

Происходит при сериализации исключения для создания объекта состояния исключения, содержащего сериализованные данные об исключении.

(Унаследовано от Exception)

Применяется к