FaultException<TDetail> Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wird in einer Clientanwendung verwendet, um vertraglich angegebene SOAP-Fehler abzufangen.
generic <typename TDetail>
public ref class FaultException : System::ServiceModel::FaultException
public class FaultException<TDetail> : System.ServiceModel.FaultException
[System.Runtime.Serialization.KnownType("GetKnownTypes")]
[System.Serializable]
public class FaultException<TDetail> : System.ServiceModel.FaultException
[System.Serializable]
public class FaultException<TDetail> : System.ServiceModel.FaultException
type FaultException<'Detail> = class
inherit FaultException
[<System.Runtime.Serialization.KnownType("GetKnownTypes")>]
[<System.Serializable>]
type FaultException<'Detail> = class
inherit FaultException
[<System.Serializable>]
type FaultException<'Detail> = class
inherit FaultException
Public Class FaultException(Of TDetail)
Inherits FaultException
Typparameter
- TDetail
Der serialisierbare Fehlerdetailtyp.
- 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.
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 Clientcode aussieht, wenn er vom Client mit dem ServiceModel Metadata Utility Tool (Svcutil.exe) importiert wird.
Das folgende Codebeispiel zeigt, wie ein Client den FaultException<TDetail>-Typ abfangen kann, der den im Vorgangsvertrag angegebenen benutzerdefinierten SOAP-Fehler darstellt.
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
Erfassen Sie das FaultException<TDetail> Objekt in einer Windows Communication Foundation (WCF)-Clientanwendung, um einen SOAP-Fehler zu behandeln, der vertraglich in einem Vorgangsvertrag angegeben wurde.
Normal bereitgestellte Dienste verwenden FaultContractAttribute, um alle SOAP-Fehler formal anzugeben, die bei einem Client während des normalen Betriebs eingehen können. Fehlerinformationen in einem FaultContractAttribute werden als a FaultException<TDetail> angezeigt (wobei der typeparameter das serialisierbare Fehlerobjekt ist, das im Vorgang FaultContractAttributeangegeben ist), wenn es bei einer Clientanwendung eingeht. Das FaultContractAttribute kann zur Angabe der SOAP-Fehler für bidirektionale Dienstmethoden und für asynchrone Methodenpaare verwendet werden.
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.
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. 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. Im Allgemeinen wird empfohlen, dass als Detailtypen benutzerdefinierte serialisierbare und für den Fehler geeignete Typen verwendet werden und keine 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. |
FaultException<TDetail>(TDetail) |
Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt verwendet. |
FaultException<TDetail>(TDetail, FaultReason) |
Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt und die angegebene Fehlerursache verwendet. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode) |
Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt, die angegebene Fehlerursache und den Fehlercode verwendet. |
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. |
FaultException<TDetail>(TDetail, String) |
Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detail und die angegebene Fehlerursache verwendet. |
FaultException<TDetail>(TDetail, String, FaultCode) |
Initialisiert eine neue Instanz der FaultException<TDetail>-Klasse, die das angegebene Detailobjekt, die angegebene Fehlerursache und den Fehlercode verwendet. |
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. |
Eigenschaften
Action |
Ruft den Wert der SOAP-Aktion für die Fehlermeldung ab. (Geerbt von FaultException) |
Code |
Ruft den Fehlercode für den SOAP-Fehler ab. (Geerbt von FaultException) |
Data |
Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen. (Geerbt von Exception) |
Detail |
Ruft das Objekt ab, das die Detailinformationen zur Fehlerbedingung enthält. |
HelpLink |
Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest. (Geerbt von Exception) |
HResult |
Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist. (Geerbt von Exception) |
InnerException |
Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat. (Geerbt von Exception) |
Message |
Ruft die Meldung für die Ausnahme ab. (Geerbt von FaultException) |
Reason |
Ruft FaultReason für den SOAP-Fehler ab. (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. (Geerbt von Exception) |
StackTrace |
Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab. (Geerbt von Exception) |
TargetSite |
Ruft die Methode ab, die die aktuelle Ausnahme auslöst. (Geerbt von Exception) |
Methoden
CreateMessageFault() |
Erstellt ein MessageFault-Objekt, das verwendet werden kann, um eine Message zu erstellen, die den SOAP-Fehler darstellt. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (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. (Geerbt von Exception) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Veraltet.
Implementierung der GetObjectData(SerializationInfo, StreamingContext)-Methode, die aufgerufen wird, wenn das Objekt in einen Stream serialisiert wird. |
GetObjectData(SerializationInfo, StreamingContext) |
Veraltet.
Implementierung der GetObjectData(SerializationInfo, StreamingContext)-Methode, die aufgerufen wird, wenn das Objekt in einen Stream serialisiert wird. (Geerbt von FaultException) |
GetType() |
Ruft den Laufzeittyp der aktuellen Instanz ab. (Geerbt von Exception) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge für das FaultException<TDetail>-Objekt zurück. |
Ereignisse
SerializeObjectState |
Veraltet.
Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen. (Geerbt von Exception) |