FaultException<TDetail> Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Używany w aplikacji klienckiej do przechwytywania usterek określonych umownie protokołu 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
Typ szczegółów błędu możliwego do serializacji.
- Dziedziczenie
- Dziedziczenie
- Pochodne
- Atrybuty
Przykłady
Poniższy przykład kodu pokazuje, jak usługa używa FaultException<TDetail> typu do zgłaszania wyjątku zarządzanego, który jest konwertowany na błąd SOAP określony przez 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
Poniższy przykład kodu pokazuje, jak kod klienta wygląda po zaimportowaniu przez klienta przy użyciu narzędzia ServiceModel Metadata Tool (Svcutil.exe).
Poniższy przykład kodu pokazuje, jak klient może przechwycić FaultException<TDetail> typ reprezentujący niestandardowy błąd protokołu SOAP określony w kontrakcie operacji.
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
Uwagi
Przechwyć FaultException<TDetail> obiekt w aplikacji klienckiej Windows Communication Foundation (WCF) w celu obsługi błędu protokołu SOAP, który został określony umownie w kontrakcie operacji.
Typowe wdrożone usługi używają elementu , FaultContractAttribute aby formalnie określić wszystkie błędy protokołu SOAP, które klient może oczekiwać w normalnym przebiegu operacji. Informacje o błędzie w obiekcie FaultContractAttribute są wyświetlane jako FaultException<TDetail> (gdzie typeparameter jest obiektem błędu z możliwością serializacji określonym w operacji FaultContractAttribute) po nadejściu do aplikacji klienckiej. Element FaultContractAttribute może służyć do określania błędów protokołu SOAP dla obu metod usługi dwukierunkowej i par metod asynchronicznych.
Ponieważ FaultException<TDetail> jest to zarówno FaultException element , jak CommunicationExceptioni , aby przechwycić określone błędy protokołu SOAP, upewnij się, że przechwytujesz FaultException<TDetail> typy przed FaultException typami i CommunicationException lub obsłuż określone wyjątki w jednym z tych programów obsługi wyjątków.
Uwaga
Jeśli używasz System.ServiceModel.FaultContractAttribute polecenia , aby określić FaultException<TDetail> , gdzie parametr typu jest System.String, wartość ciągu jest przypisana do Detail właściwości w aplikacji klienckiej; klienci nie mogą pobrać tego ciągu przez wywołanie FaultException<TDetail>.ToString metody . Aby wartość ciągu została zwrócona, gdy aplikacja kliencka wywołuje Exception.ToStringmetodę System.ServiceModel.FaultException , należy zgłosić wyjątek wewnątrz operacji i przekazać ciąg do konstruktora. Ogólnie rzecz biorąc, zaleca się, aby typy szczegółów są niestandardowymi typami, które można serializować, odpowiednie dla błędu, a nie System.String.
Konstruktory
FaultException<TDetail>(SerializationInfo, StreamingContext) |
Inicjuje nowe wystąpienie FaultException<TDetail> klasy przy użyciu określonych informacji o serializacji i kontekstu podczas deserializacji strumienia FaultException do obiektu. |
FaultException<TDetail>(TDetail) |
Inicjuje FaultException<TDetail> nowe wystąpienie klasy, które używa określonego obiektu szczegółów. |
FaultException<TDetail>(TDetail, FaultReason) |
Inicjuje FaultException<TDetail> nowe wystąpienie klasy, które używa określonego obiektu szczegółów i przyczyny błędu. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode) |
Inicjuje FaultException<TDetail> nowe wystąpienie klasy, które używa określonego obiektu szczegółów, przyczyny błędu i kodu błędu. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode, String) |
Inicjuje FaultException<TDetail> nowe wystąpienie klasy, które używa określonego obiektu szczegółów oraz przyczyny błędu protokołu SOAP, kodu i wartości akcji. |
FaultException<TDetail>(TDetail, String) |
Inicjuje FaultException<TDetail> nowe wystąpienie klasy, które używa określonego szczegółu i przyczyny błędu. |
FaultException<TDetail>(TDetail, String, FaultCode) |
Inicjuje FaultException<TDetail> nowe wystąpienie klasy, które używa określonego obiektu szczegółów, przyczyny błędu i kodu błędu. |
FaultException<TDetail>(TDetail, String, FaultCode, String) |
Inicjuje FaultException<TDetail> nowe wystąpienie klasy, które używa określonego obiektu szczegółów oraz przyczyny błędu protokołu SOAP, kodu i wartości akcji. |
Właściwości
Action |
Pobiera wartość akcji PROTOKOŁU SOAP dla komunikatu o błędzie. (Odziedziczone po FaultException) |
Code |
Pobiera kod błędu błędu protokołu SOAP. (Odziedziczone po FaultException) |
Data |
Pobiera kolekcję par klucz/wartość, które zapewniają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku. (Odziedziczone po Exception) |
Detail |
Pobiera obiekt zawierający szczegółowe informacje o warunku błędu. |
HelpLink |
Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem. (Odziedziczone po Exception) |
HResult |
Pobiera lub ustawia HRESULT, zakodowaną wartość liczbową przypisaną do określonego wyjątku. (Odziedziczone po Exception) |
InnerException |
Exception Pobiera wystąpienie, które spowodowało bieżący wyjątek. (Odziedziczone po Exception) |
Message |
Pobiera komunikat dla wyjątku. (Odziedziczone po FaultException) |
Reason |
Pobiera błąd FaultReason protokołu SOAP. (Odziedziczone po FaultException) |
Source |
Pobiera lub ustawia nazwę aplikacji lub obiektu, który powoduje błąd. (Odziedziczone po Exception) |
StackTrace |
Pobiera reprezentację ciągu natychmiastowych ramek na stosie wywołań. (Odziedziczone po Exception) |
TargetSite |
Pobiera metodę, która zgłasza bieżący wyjątek. (Odziedziczone po Exception) |
Metody
CreateMessageFault() |
MessageFault Tworzy obiekt, który może służyć do utworzenia obiektu Message reprezentującego błąd protokołu SOAP. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetBaseException() |
Po przesłonięciu w klasie pochodnej funkcja zwraca Exception główną przyczynę co najmniej jednego kolejnego wyjątku. (Odziedziczone po Exception) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Przestarzałe.
Implementacja GetObjectData(SerializationInfo, StreamingContext) metody, która jest wywoływana, gdy obiekt jest serializowany do strumienia. |
GetObjectData(SerializationInfo, StreamingContext) |
Przestarzałe.
Implementacja GetObjectData(SerializationInfo, StreamingContext) metody, która jest wywoływana, gdy obiekt jest serializowany do strumienia. (Odziedziczone po FaultException) |
GetType() |
Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia. (Odziedziczone po Exception) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg dla FaultException<TDetail> obiektu . |
Zdarzenia
SerializeObjectState |
Przestarzałe.
Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku, który zawiera serializowane dane dotyczące wyjątku. (Odziedziczone po Exception) |