FaultException Класс

Определение

Представляет ошибку SOAP.

public ref class FaultException : System::ServiceModel::CommunicationException
public class FaultException : System.ServiceModel.CommunicationException
[System.Serializable]
public class FaultException : System.ServiceModel.CommunicationException
[System.Serializable]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData[]))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData[]))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData))]
public class FaultException : System.ServiceModel.CommunicationException
type FaultException = class
    inherit CommunicationException
[<System.Serializable>]
type FaultException = class
    inherit CommunicationException
[<System.Serializable>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData[]))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData[]))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData))>]
type FaultException = class
    inherit CommunicationException
Public Class FaultException
Inherits CommunicationException
Наследование
Наследование
Производный
Атрибуты

Примеры

В следующем примере кода показано, как использовать блок try/catch для перехвата и обработки объектов FaultException, вызванных службой. Это часто происходит при включении отладки в приложении службы.

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

Комментарии

В службе используйте класс FaultException, чтобы создать нетипизированную ошибку для возврата клиенту для отладки.

В клиенте перехватите объект FaultException, чтобы обработать неизвестные или универсальные ошибки, например ошибки, возвращаемые службой, свойству IncludeExceptionDetailInFaults которой присвоено значение true. Поскольку FaultException расширяет CommunicationException, не забудьте перехватить все объекты FaultException до перехвата объектов CommunicationException, если их необходимо перехватить по отдельности.

Примечание

Дуплексные службы также могут перехватывать объекты FaultException, возвращаемые в результате взаимодействия с дуплексным клиентом.

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

  • Отправка ошибок SOAP из службы для отладки.

  • Захват ошибок SOAP на стороне клиента, если ошибки не являются частью контракта службы.

Создайте объекты FaultException, если строку необходимо передать в конструктор и извлечь с помощью клиента, вызвав метод FaultException<TDetail>.ToString. Если задан контракт сбоя, принадлежащий к типу System.ServiceModel.FaultException<TDetail>, с параметром типа System.String, значение строки доступно как свойство FaultException<TDetail>.Detail, а не за счет вызова FaultException<TDetail>.ToString.

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

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

FaultException()

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

FaultException(FaultReason)

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

FaultException(FaultReason, FaultCode)

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

FaultException(FaultReason, FaultCode, String)

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

FaultException(MessageFault)

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

FaultException(MessageFault, String)

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

FaultException(SerializationInfo, StreamingContext)

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

FaultException(String)

Инициализирует новый экземпляр класса FaultException с заданной причиной ошибки.

FaultException(String, FaultCode)

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

FaultException(String, FaultCode, String)

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

Свойства

Action

Возвращает значение действия SOAP для сообщения об ошибке.

Code

Возвращает код ошибки для ошибки SOAP.

Data

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

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

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

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

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

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

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

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

Возвращает сообщение исключения.

Reason

Возвращает причину FaultReason для ошибки SOAP.

Source

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

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

Получает строковое представление непосредственных кадров в стеке вызова.

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

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

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

Методы

CreateFault(MessageFault, String, Type[])

Возвращает объект FaultException из заданной ошибки сообщения, действия и массива типов сведений.

CreateFault(MessageFault, Type[])

Возвращает объект FaultException из заданной ошибки сообщения и массива типов сведений.

CreateMessageFault()

Возвращает объект MessageFault.

Equals(Object)

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

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

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

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

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

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

Реализация метода GetObjectData(SerializationInfo, StreamingContext), вызываемая при сериализации объекта в поток.

GetObjectData(SerializationInfo, StreamingContext)

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

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

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

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

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

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

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

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

События

SerializeObjectState
Устаревшие..

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

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

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