FaultException<TDetail> Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Používá se v klientské aplikaci k zachycení smluvně specifikovaných chyb SOAP.
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
Parametry typu
- TDetail
Serializovatelný typ podrobností chyby.
- Dědičnost
- Dědičnost
- Odvozené
- Atributy
Příklady
Následující příklad kódu ukazuje, jak služba používá FaultException<TDetail> typ k vyvolání spravované výjimky, která se převede na chybu SOAP určenou pomocí 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
Následující příklad kódu ukazuje, jak vypadá kód klienta při importu pomocí nástroje ServiceModel Metadata Utility Tool (Svcutil.exe).
Následující příklad kódu ukazuje, jak klient může zachytit FaultException<TDetail> typ, který představuje vlastní chybu SOAP zadanou v kontraktu operace.
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
Poznámky
Zachyťte FaultException<TDetail> objekt v klientské aplikaci Windows Communication Foundation (WCF) pro zpracování chyby SOAP, která byla smluvně zadána ve smlouvě o operaci.
Typické nasazené služby používají FaultContractAttribute k formálnímu určení všech chyb SOAP, které klient může očekávat v normálním průběhu operace. Informace o chybě v objektu FaultContractAttributeFaultException<TDetail> se zobrazí jako (kde typeparameter je serializovatelný objekt chyby zadaný v operaci FaultContractAttribute) při přijetí do klientské aplikace. Lze FaultContractAttribute použít k určení chyb SOAP pro metody obousměrné služby i pro asynchronní dvojice metod.
Vzhledem k tomuFaultException<TDetail>, že je a FaultException proto CommunicationException, chcete-li zachytit zadané chyby SOAP, ujistěte seFaultException, že zachytáváte FaultException<TDetail> typy před typy a CommunicationException nebo zpracováváte zadané výjimky v některé z těchto obslužných rutin výjimek.
Poznámka
Pokud použijete System.ServiceModel.FaultContractAttribute k určení FaultException<TDetail> , kde parametr typu je System.String, hodnota řetězce se přiřadí Detail vlastnosti v klientské aplikaci; klienti nemohou načíst tento řetězec voláním FaultException<TDetail>.ToString metody . Pokud chcete, aby se řetězcová hodnota vrátila při volání Exception.ToStringklientské aplikace , vyvolejte System.ServiceModel.FaultException výjimku uvnitř operace a předejte řetězec konstruktoru. Obecně se doporučuje, aby typy podrobností byly vlastní serializovatelné typy vhodné pro chybu, a nikoli System.String.
Konstruktory
FaultException<TDetail>(SerializationInfo, StreamingContext) |
Inicializuje novou instanci FaultException<TDetail> třídy pomocí zadané serializace informace a kontextu při deserializaci datového proudu do objektu FaultException . |
FaultException<TDetail>(TDetail) |
Inicializuje novou instanci FaultException<TDetail> třídy, která používá zadaný objekt podrobností. |
FaultException<TDetail>(TDetail, FaultReason) |
Inicializuje novou instanci FaultException<TDetail> třídy, která používá zadaný podrobný objekt a důvod chyby. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode) |
Inicializuje novou instanci FaultException<TDetail> třídy, která používá zadaný podrobný objekt, důvod chyby a kód chyby. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode, String) |
Inicializuje novou instanci FaultException<TDetail> třídy, která používá zadaný detail objektu a důvod chyby SOAP, kód a hodnoty akce. |
FaultException<TDetail>(TDetail, String) |
Inicializuje novou instanci FaultException<TDetail> třídy, která používá zadané podrobnosti a důvod chyby. |
FaultException<TDetail>(TDetail, String, FaultCode) |
Inicializuje novou instanci FaultException<TDetail> třídy, která používá zadaný podrobný objekt, důvod chyby a kód chyby. |
FaultException<TDetail>(TDetail, String, FaultCode, String) |
Inicializuje novou instanci FaultException<TDetail> třídy, která používá zadaný detail objektu a důvod chyby SOAP, kód a hodnoty akce. |
Vlastnosti
Action |
Získá hodnotu akce SOAP chybové zprávy. (Zděděno od FaultException) |
Code |
Získá kód chyby pro chybu SOAP. (Zděděno od FaultException) |
Data |
Získá kolekci párů klíč/hodnota, které poskytují další uživatelem definované informace o výjimce. (Zděděno od Exception) |
Detail |
Získá objekt, který obsahuje podrobné informace chybové podmínky. |
HelpLink |
Získá nebo nastaví odkaz na soubor nápovědy přidružený k této výjimce. (Zděděno od Exception) |
HResult |
Získá nebo nastaví HRESULT, kódovaná číselná hodnota, která je přiřazena ke konkrétní výjimce. (Zděděno od Exception) |
InnerException |
Exception Získá instanci, která způsobila aktuální výjimku. (Zděděno od Exception) |
Message |
Získá zprávu o výjimce. (Zděděno od FaultException) |
Reason |
FaultReason Získá pro chybu SOAP. (Zděděno od FaultException) |
Source |
Získá nebo nastaví název aplikace nebo objektu, který způsobuje chybu. (Zděděno od Exception) |
StackTrace |
Získá řetězcovou reprezentaci okamžitých rámců v zásobníku volání. (Zděděno od Exception) |
TargetSite |
Získá metodu, která vyvolá aktuální výjimku. (Zděděno od Exception) |
Metody
CreateMessageFault() |
Vytvoří MessageFault objekt, který lze použít k vytvoření Message , který představuje chybu SOAP. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetBaseException() |
Při přepsání v odvozené třídě vrátí hodnotu Exception , která je původní příčinou jedné nebo více následných výjimek. (Zděděno od Exception) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Zastaralé.
GetObjectData(SerializationInfo, StreamingContext) Implementace metody, která je volána, když je objekt serializován do datového proudu. |
GetObjectData(SerializationInfo, StreamingContext) |
Zastaralé.
GetObjectData(SerializationInfo, StreamingContext) Implementace metody, která je volána, když je objekt serializován do datového proudu. (Zděděno od FaultException) |
GetType() |
Získá typ modulu runtime aktuální instance. (Zděděno od Exception) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec pro FaultException<TDetail> objekt . |
Událost
SerializeObjectState |
Zastaralé.
Nastane, když je výjimka serializována k vytvoření objektu stavu výjimky, který obsahuje serializovaná data o výjimce. (Zděděno od Exception) |