FaultException<TDetail> Klasse

Definition

Wird in einer Clientanwendung verwendet, um vertraglich angegebene SOAP-Fehler abzufangen.Used in a client application to catch contractually-specified SOAP faults.

generic <typename TDetail>
public ref class FaultException : System::ServiceModel::FaultException
public class FaultException<TDetail> : 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

Typparameter

TDetail

Der serialisierbare Fehlerdetailtyp.The serializable error detail type.

Vererbung
Vererbung
Abgeleitet
Attribute

Beispiele

Das folgende Codebeispiel zeigt, wie ein Dienst den FaultException<TDetail>-Typ verwendet, um eine verwaltete Ausnahme auszulösen, die in den vom FaultContractAttribute angegebenen SOAP-Fehler konvertiert wird.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

Das folgende Codebeispiel zeigt, wie der Client Code beim Importieren durch den Client mit dem Service Model Metadata Utility-Tool (Svcutil. exe)aussieht.The following code example shows how the client code looks when imported by the client using the ServiceModel Metadata Utility Tool (Svcutil.exe).

Das folgende Codebeispiel zeigt, wie ein Client den FaultException<TDetail>-Typ abfangen kann, der den im Vorgangsvertrag angegebenen benutzerdefinierten SOAP-Fehler darstellt.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

Hinweise

Fangen Sie das FaultException<TDetail>-Objekt in einer Windows Communication Foundation (WCF)-Client Anwendung ab, um einen SOAP-Fehler zu behandeln, der in einem Vorgangs Vertrag vertraglich angegeben wurde.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.

Normal bereitgestellte Dienste verwenden FaultContractAttribute, um alle SOAP-Fehler formal anzugeben, die bei einem Client während des normalen Betriebs eingehen können.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. Fehlerinformationen in einem FaultContractAttribute werden als FaultException<TDetail> angezeigt (wobei der typeparameter das serialisierbare Fehler Objekt ist, das im FaultContractAttributedes Vorgangs angegeben ist), wenn es bei einer Client Anwendung eingeht.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. Das FaultContractAttribute kann zur Angabe der SOAP-Fehler für bidirektionale Dienstmethoden und für asynchrone Methodenpaare verwendet werden.The FaultContractAttribute can be used to specify SOAP faults for both two-way service methods and for asynchronous method pairs.

Da es sich bei FaultException<TDetail> sowohl um eine FaultException und somit auch um eine CommunicationException handelt, müssen Sie, um bestimmte SOAP-Fehler abzufangen, sicherstellen, dass Sie die FaultException<TDetail>-Typen vor dem FaultException-Typ und dem CommunicationException-Typ abfangen oder dass Sie die angegebenen Ausnahmen mit einem der Ausnahmehandler verarbeiten.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.

Hinweis

Wenn Sie ein System.ServiceModel.FaultContractAttribute verwenden, um eine FaultException<TDetail> festzulegen, bei der der Typparameter ein System.String ist, wird der Zeichenfolgewert der Detail-Eigenschaft in der Clientanwendung zugeordnet; Clients können diese Zeichenfolge nicht durch Abrufen der FaultException<TDetail>.ToString-Methode abrufen.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. Damit der Zeichenfolgewert zurückgegeben wird, wenn die Clientanwendung Exception.ToString aufruft, lösen Sie im Vorgang eine System.ServiceModel.FaultException-Ausnahme aus, und übergeben Sie die Zeichenfolge dem Konstruktor.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.
Im Allgemeinen wird empfohlen, dass als Detailtypen benutzerdefinierte serialisierbare und für den Fehler geeignete Typen verwendet werden und keine System.String.In general, it is recommended that detail types be custom serializable types appropriate to the fault and not a System.String.

Konstruktoren

FaultException<TDetail>(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse mit den angegebenen Serialisierungsinformationen und dem angegebenen Kontext, wenn ein Stream in ein FaultException-Objekt deserialisiert wird.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)

Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt verwendet.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object.

FaultException<TDetail>(TDetail, FaultReason)

Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt und die angegebene Fehlerursache verwendet.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object and fault reason.

FaultException<TDetail>(TDetail, FaultReason, FaultCode)

Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt, die angegebene Fehlerursache und den Fehlercode verwendet.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)

Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt, die SOAP-Fehlerursache, den Code und die Aktionswerte verwendet.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)

Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detail und die angegebene Fehlerursache verwendet.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail and fault reason.

FaultException<TDetail>(TDetail, String, FaultCode)

Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt, die angegebene Fehlerursache und den Fehlercode verwendet.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)

Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt, die SOAP-Fehlerursache, den Code und die Aktionswerte verwendet.Initializes a new instance of the FaultException<TDetail> class that uses the specified detail object, and SOAP fault reason, code and action values.

Eigenschaften

Action

Ruft den Wert der SOAP-Aktion für die Fehlermeldung ab.Gets the value of the SOAP action for the fault message.

(Geerbt von FaultException)
Code

Ruft den Fehlercode für den SOAP-Fehler ab.Gets the fault code for the SOAP fault.

(Geerbt von FaultException)
Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Geerbt von Exception)
Detail

Ruft das Objekt ab, das die Detailinformationen zur Fehlerbedingung enthält.Gets the object that contains the detail information of the fault condition.

HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.Gets or sets a link to the help file associated with this exception.

(Geerbt von Exception)
HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Geerbt von Exception)
InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.Gets the Exception instance that caused the current exception.

(Geerbt von Exception)
Message

Ruft die Meldung für die Ausnahme ab.Gets the message for the exception.

(Geerbt von FaultException)
Reason

Ruft FaultReason für den SOAP-Fehler ab.Gets the FaultReason for the SOAP fault.

(Geerbt von FaultException)
Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.Gets or sets the name of the application or the object that causes the error.

(Geerbt von Exception)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.Gets a string representation of the immediate frames on the call stack.

(Geerbt von Exception)
TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.Gets the method that throws the current exception.

(Geerbt von Exception)

Methoden

CreateMessageFault()

Erstellt ein MessageFault-Objekt, das verwendet werden kann, um eine Message zu erstellen, die den SOAP-Fehler darstellt.Creates a MessageFault object that can be used to create a Message that represents the SOAP fault.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die Grundursache für eine oder mehrere nachfolgende Ausnahmen ist.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Geerbt von Exception)
GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Implementierung der GetObjectData(SerializationInfo, StreamingContext)-Methode, die aufgerufen wird, wenn das Objekt in einen Stream serialisiert wird.Implementation of the GetObjectData(SerializationInfo, StreamingContext) method that is called when the object is serialized into a stream.

GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.Gets the runtime type of the current instance.

(Geerbt von Exception)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge für das FaultException<TDetail>-Objekt zurück.Returns a string for the FaultException<TDetail> object.

Ereignisse

SerializeObjectState

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Geerbt von Exception)

Gilt für: