FaultException<TDetail> Clase

Definición

Se utiliza en una aplicación cliente para detectar los errores de SOAP especificados contractualmente.Used in a client application to catch contractually-specified SOAP faults.

generic <typename TDetail>
public ref class FaultException : System::ServiceModel::FaultException
[System.Serializable]
public class FaultException<TDetail> : System.ServiceModel.FaultException
type FaultException<'Detail> = class
    inherit FaultException
Public Class FaultException(Of TDetail)
Inherits FaultException

Parámetros de tipo

TDetail

El tipo de detalle de error serializable.The serializable error detail type.

Herencia
Derivado
Atributos

Ejemplos

El ejemplo de código siguiente muestra cómo utiliza un servicio el tipo FaultException<TDetail> para producir una excepción administrada que se convierte en el error de SOAP especificado por FaultContractAttribute.The following code example shows how a service uses the FaultException<TDetail> type to throw a managed exception that gets converted into the SOAP fault specified by the FaultContractAttribute.

using System;
using System.Collections.Generic;
using System.Net.Security;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="http://microsoft.wcf.documentation")]
  public interface ISampleService{
    [OperationContract]
    [FaultContractAttribute(
      typeof(GreetingFault),
      Action="http://www.contoso.com/GreetingFault",
      ProtectionLevel=ProtectionLevel.EncryptAndSign
      )]
    string SampleMethod(string msg);
  }
 
  [DataContractAttribute]
  public class GreetingFault
  { 
    private string report;

    public GreetingFault(string message)
    {
      this.report = message;
    }

    [DataMemberAttribute]
    public string Message
    {
      get { return this.report; }
      set { this.report = value; }
    }
  }

  class SampleService : ISampleService
  {
  #region ISampleService Members

  public string  SampleMethod(string msg)
  {
    Console.WriteLine("Client said: " + msg);
    // Generate intermittent error behavior.
    Random rnd = new Random(DateTime.Now.Millisecond);
    int test = rnd.Next(5);
    if (test % 2 != 0)
      return "The service greets you: " + msg; 
    else
      throw new FaultException<GreetingFault>(new GreetingFault("A Greeting error occurred. You said: " + msg));
  }

  #endregion
  }
}

Imports System.Collections.Generic
Imports System.Net.Security
Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports System.Text

Namespace Microsoft.WCF.Documentation
  <ServiceContract(Namespace:="http://microsoft.wcf.documentation")> _
  Public Interface ISampleService
    <OperationContract, FaultContractAttribute(GetType(GreetingFault), Action:="http://www.contoso.com/GreetingFault", ProtectionLevel:=ProtectionLevel.EncryptAndSign)> _
    Function SampleMethod(ByVal msg As String) As String
  End Interface

  <DataContractAttribute> _
  Public Class GreetingFault
    Private report As String

    Public Sub New(ByVal message As String)
      Me.report = message
    End Sub

    <DataMemberAttribute> _
    Public Property Message() As String
      Get
          Return Me.report
      End Get
      Set(ByVal value As String)
          Me.report = value
      End Set
    End Property
  End Class

  Friend Class SampleService
      Implements ISampleService
  #Region "ISampleService Members"

  Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
    Console.WriteLine("Client said: " & msg)
    ' Generate intermittent error behavior.
    Dim rand As New Random(DateTime.Now.Millisecond)
    Dim test As Integer = rand.Next(5)
    If test Mod 2 <> 0 Then
      Return "The service greets you: " & msg
    Else
      Throw New FaultException(Of GreetingFault)(New GreetingFault("A Greeting error occurred. You said: " & msg))
    End If
  End Function

  #End Region
  End Class
End Namespace

En el ejemplo de código siguiente se muestra el aspecto del código de cliente cuando lo importa el cliente mediante la herramienta de utilidad de metadatos de ServiceModel (SvcUtil. exe).The following code example shows how the client code looks when imported by the client using the ServiceModel Metadata Utility Tool (Svcutil.exe).

El ejemplo de código siguiente muestra cómo un cliente puede detectar el tipo FaultException<TDetail> que representa el error de SOAP personalizado especificado en el contrato de la operación.The following code example shows how a client can catch the FaultException<TDetail> type that represents the custom SOAP fault specified in the operation contract.

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 config 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();

      // Done with service. 
      wcfClient.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.ReadLine();
      wcfClient.Abort();
    }
    catch (FaultException<GreetingFault> greetingFault)
    {
      Console.WriteLine(greetingFault.Detail.Message);
      Console.ReadLine();
      wcfClient.Abort();
    }
    catch (FaultException unknownFault)
    {
      Console.WriteLine("An unknown exception was received. " + unknownFault.Message);
      Console.ReadLine();
      wcfClient.Abort();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message + commProblem.StackTrace);
      Console.ReadLine();
      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 config 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()

      ' Done with service. 
      wcfClient.Close()
      Console.WriteLine("Done!")
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      Console.ReadLine()
      wcfClient.Abort()
    Catch greetingFault As FaultException(Of GreetingFault)
      Console.WriteLine(greetingFault.Detail.Message)
      Console.ReadLine()
      wcfClient.Abort()
    Catch unknownFault As FaultException
      Console.WriteLine("An unknown exception was received. " & unknownFault.Message)
      Console.ReadLine()
      wcfClient.Abort()
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message + commProblem.StackTrace)
      Console.ReadLine()
      wcfClient.Abort()
    End Try
  End Sub
End Class

Comentarios

Capture el objeto FaultException<TDetail> en una aplicación cliente de Windows Communication Foundation (WCF) para controlar un error de SOAP que se ha especificado contractualmente en un contrato de operación.Catch the FaultException<TDetail> object in a Windows Communication Foundation (WCF) client application to handle a SOAP fault that has been contractually specified in an operation contract.

Los servicios implementados típicos utilizan FaultContractAttribute para especificar formalmente todos los errores de SOAP que un cliente puede esperar recibir en el curso normal de una operación.Typical deployed services use the FaultContractAttribute to formally specify all SOAP faults that a client can expect to receive in the normal course of an operation. La información de error de un FaultContractAttribute aparece como FaultException<TDetail> (donde typeparameter es el objeto de error serializable especificado en la FaultContractAttribute de la operación) cuando llega a una aplicación cliente.Error information in a FaultContractAttribute appears as a FaultException<TDetail> (where the typeparameter is the serializable error object specified in the operation's FaultContractAttribute) when it arrives at a client application. FaultContractAttribute se puede utilizar para especificar los errores de SOAP para los métodos de servicio bidireccionales y para los pares del método asincrónico.The FaultContractAttribute can be used to specify SOAP faults for both two-way service methods and for asynchronous method pairs.

Dado que FaultException<TDetail> es FaultException y, por consiguiente, CommunicationException, para detectar los errores de SOAP especificados le asegurarán que detecta los tipos FaultException<TDetail> antes de los tipos FaultException y CommunicationException o administra las excepciones especificadas en uno de esos controladores de excepciones.Because FaultException<TDetail> is both a FaultException and therefore a CommunicationException, to catch specified SOAP faults make sure you catch the FaultException<TDetail> types prior to the FaultException and CommunicationException types or handle the specified exceptions in one of those exception handlers.

Nota

Si utiliza System.ServiceModel.FaultContractAttribute para especificar un FaultException<TDetail> donde el parámetro de tipo es un System.String, el valor de la cadena se asignará a la propiedad Detail en la aplicación cliente; los clientes no pueden recuperar la cadena llamando al método FaultException<TDetail>.ToString.If you use System.ServiceModel.FaultContractAttribute to specify a FaultException<TDetail> where the type parameter is a System.String, the string value is assigned to the Detail property in the client application; clients cannot retrieve that string by calling the FaultException<TDetail>.ToString method. Para que se devuelva el valor de la cadena cuando la aplicación cliente llama a Exception.ToString, se inicia una excepción System.ServiceModel.FaultException dentro de la operación y se pasa la cadena al constructor.To have the string value returned when the client application calls Exception.ToString, throw a System.ServiceModel.FaultException exception inside the operation and pass the string to the constructor.
En general, se recomienda que los tipos de detalle sean tipos serializables personalizados apropiados para el error y no un System.String.In general, it is recommended that detail types be custom serializable types appropriate to the fault and not a System.String.

Constructores

FaultException<TDetail>(SerializationInfo, StreamingContext)

Inicializa una nueva instancia de la clase FaultException<TDetail> con los parámetros especificados: la información de serialización y el contexto al deserializar una secuencia en un objeto FaultException.Initializes a new instance of the FaultException<TDetail> class using the specified serialization information and context when deserializing a stream into a FaultException object.

FaultException<TDetail>(TDetail)

Inicializa una instancia nueva de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object.

FaultException<TDetail>(TDetail, FaultReason)

Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado y la razón del error.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object and fault reason.

FaultException<TDetail>(TDetail, FaultReason, FaultCode)

Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado, la razón del error y el código del error.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object, fault reason, and fault code.

FaultException<TDetail>(TDetail, FaultReason, FaultCode, String)

Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado, la razón del error de SOAP, el código y los valores de la acción.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object, and SOAP fault reason, code and action values.

FaultException<TDetail>(TDetail, String)

Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el detalle especificado y la razón del error.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail and fault reason.

FaultException<TDetail>(TDetail, String, FaultCode)

Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado, la razón del error y el código del error.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object, fault reason, and fault code.

FaultException<TDetail>(TDetail, String, FaultCode, String)

Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado, la razón del error de SOAP, el código y los valores de la acción.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object, and SOAP fault reason, code and action values.

Propiedades

Action

Obtiene el valor de la acción de SOAP para el mensaje de error.Gets the value of the SOAP action for the fault message.

(Heredado de FaultException)
Code

Obtiene el código de error para el error de SOAP.Gets the fault code for the SOAP fault.

(Heredado de FaultException)
Data

Obtiene una colección de pares clave-valor que proporcionan más información definida por el usuario sobre la excepción.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Heredado de Exception)
Detail

Obtiene el objeto que contiene la información del detalle de la condición del error.Gets the object that contains the detail information of the fault condition.

HelpLink

Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción.Gets or sets a link to the help file associated with this exception.

(Heredado de Exception)
HResult

Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Heredado de Exception)
InnerException

Obtiene la instancia Exception que produjo la excepción actual.Gets the Exception instance that caused the current exception.

(Heredado de Exception)
Message

Obtiene el mensaje para la excepción.Gets the message for the exception.

(Heredado de FaultException)
Reason

Obtiene FaultReason para el error de SOAP.Gets the FaultReason for the SOAP fault.

(Heredado de FaultException)
Source

Devuelve o establece el nombre de la aplicación o del objeto que generó el error.Gets or sets the name of the application or the object that causes the error.

(Heredado de Exception)
StackTrace

Obtiene una representación de cadena de los marcos inmediatos en la pila de llamadas.Gets a string representation of the immediate frames on the call stack.

(Heredado de Exception)
TargetSite

Obtiene el método que produjo la excepción actual.Gets the method that throws the current exception.

(Heredado de Exception)

Métodos

CreateMessageFault()

Crea un objeto MessageFault que se puede utilizar para crear un Message que representa el error de SOAP.Creates a MessageFault object that can be used to create a Message that represents the SOAP fault.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetBaseException()

Cuando se reemplaza en una clase derivada, devuelve la clase Exception que representa la causa principal de una o más excepciones posteriores.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Heredado de Exception)
GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)

Implementación del método GetObjectData(SerializationInfo, StreamingContext) al que se llama cuando el objeto se serializa en un flujo.Implementation of the GetObjectData(SerializationInfo, StreamingContext) method that is called when the object is serialized into a stream.

GetType()

Obtiene el tipo de tiempo de ejecución de la instancia actual.Gets the runtime type of the current instance.

(Heredado de Exception)
MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve una cadena para el objeto FaultException<TDetail>.Returns a string for the FaultException<TDetail> object.

Eventos

SerializeObjectState

Ocurre cuando una excepción se serializa para crear un objeto de estado de excepción que contenga datos serializados sobre la excepción.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Heredado de Exception)

Se aplica a