FaultException<TDetail> Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Utilizzata in un'applicazione client per rilevare errori SOAP specificati contrattualmente.
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
Parametri di tipo
- TDetail
Tipo di dettaglio dell'errore serializzabile.
- Ereditarietà
- Ereditarietà
- Derivato
- Attributi
Esempio
Nell'esempio di codice seguente viene illustrato come un servizio utilizza il tipo FaultException<TDetail> per generare un'eccezione gestita che viene convertita nell'errore SOAP specificato da 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
Nell'esempio di codice seguente viene illustrato il modo in cui il codice client viene visualizzato quando viene importato dal client usando lo strumento utilità metadati ServiceModel (Svcutil.exe).
L'esempio di codice seguente mostra come un client può rilevare l'eccezione di tipo FaultException<TDetail> che rappresenta l'errore SOAP personalizzato specificato nel contratto di operazione.
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
Commenti
Rilevare l'oggetto FaultException<TDetail> in un'applicazione client WINDOWS Communication Foundation (WCF) per gestire un errore SOAP specificato contrattualmente in un contratto di operazione.
I servizi distribuiti in genere utilizzano l'attributo FaultContractAttribute per specificare formalmente tutti gli errori SOAP che un client prevede di ricevere durante il normale funzionamento di un'operazione. Le informazioni sull'errore in un oggetto viene visualizzato come ( FaultContractAttributeFaultException<TDetail> dove il typeparameter è l'oggetto di errore serializzabile specificato nell'operazione FaultContractAttribute) quando arriva a un'applicazione client. L'attributo FaultContractAttribute può essere utilizzato per specificare errori SOAP sia per i metodi di servizio bidirezionali sia per le coppie di metodi asincroni.
Poiché l'eccezione FaultException<TDetail> è un'eccezione FaultException e pertanto un'eccezione CommunicationException, il rilevamento degli errori SOAP specificati garantisce che le eccezioni di tipo FaultException<TDetail> vengano rilevate prima delle eccezioni di tipo FaultException e CommunicationException oppure garantisce che gli errori specificati vengano gestiti mediante un gestore di tali eccezioni.
Nota
Se si utilizza un attributo System.ServiceModel.FaultContractAttribute per specificare un'eccezione FaultException<TDetail> in cui il parametro di tipo è una stringa System.String, il valore della stringa viene assegnato alla proprietà Detail dell'applicazione client. I client non sono in grado di recuperare tale stringa chiamando il metodo FaultException<TDetail>.ToString. Per fare in modo che il valore della stringa venga restituito quando l'applicazione client chiama il metodo Exception.ToString è sufficiente generare un'eccezione System.ServiceModel.FaultException nell'operazione e passare la stringa al costruttore. In generale è consigliabile che i tipi di dettaglio siano tipi serializzabili personalizzati appropriati all'errore e non una stringa System.String.
Costruttori
FaultException<TDetail>(SerializationInfo, StreamingContext) |
Consente di inizializzare una nuova istanza della classe FaultException<TDetail> utilizzando le informazioni e il contesto di serializzazione specificati quando si deserializza un flusso in un oggetto FaultException. |
FaultException<TDetail>(TDetail) |
Consente di inizializzare una nuova istanza della classe FaultException<TDetail> che utilizza l'oggetto dettaglio specificato. |
FaultException<TDetail>(TDetail, FaultReason) |
Consente di inizializzare una nuova istanza della classe FaultException<TDetail> che utilizza l'oggetto dettaglio e il motivo dell'errore specificati. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode) |
Consente di inizializzare una nuova istanza della classe FaultException<TDetail> che utilizza l'oggetto dettaglio, il motivo e il codice dell'errore specificati. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode, String) |
Consente di inizializzare una nuova istanza della classe FaultException<TDetail> che utilizza l'oggetto dettaglio, il motivo, il codice e i valori di azione dell'errore SOAP specificati. |
FaultException<TDetail>(TDetail, String) |
Consente di inizializzare una nuova istanza della classe FaultException<TDetail> che utilizza il dettaglio e il motivo dell'errore specificati. |
FaultException<TDetail>(TDetail, String, FaultCode) |
Consente di inizializzare una nuova istanza della classe FaultException<TDetail> che utilizza l'oggetto dettaglio, il motivo e il codice dell'errore specificati. |
FaultException<TDetail>(TDetail, String, FaultCode, String) |
Consente di inizializzare una nuova istanza della classe FaultException<TDetail> che utilizza l'oggetto dettaglio, il motivo, il codice e i valori di azione dell'errore SOAP specificati. |
Proprietà
Action |
Consente di ottenere il valore di azione SOAP relativo al messaggio di errore. (Ereditato da FaultException) |
Code |
Consente di ottenere il codice dell'errore SOAP. (Ereditato da FaultException) |
Data |
Ottiene una raccolta di coppie chiave/valore che forniscono informazioni definite dall'utente aggiuntive sull'eccezione. (Ereditato da Exception) |
Detail |
Consente di ottenere un oggetto contenente le informazioni dettagliate sulla condizione di errore. |
HelpLink |
Ottiene o imposta un collegamento al file della Guida associato all'eccezione. (Ereditato da Exception) |
HResult |
Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica. (Ereditato da Exception) |
InnerException |
Ottiene l'istanza di Exception che ha causato l'eccezione corrente. (Ereditato da Exception) |
Message |
Consente di ottenere il messaggio dell'eccezione. (Ereditato da FaultException) |
Reason |
Consente di ottenere l'oggetto FaultReason relativo all'errore SOAP. (Ereditato da FaultException) |
Source |
Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore. (Ereditato da Exception) |
StackTrace |
Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate. (Ereditato da Exception) |
TargetSite |
Ottiene il metodo che genera l'eccezione corrente. (Ereditato da Exception) |
Metodi
CreateMessageFault() |
Consente di creare un oggetto MessageFault utilizzabile per creare un messaggio Message che rappresenta l'errore SOAP. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetBaseException() |
Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive. (Ereditato da Exception) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Obsoleti.
Implementazione del metodo GetObjectData(SerializationInfo, StreamingContext) chiamato quando l'oggetto viene serializzato in un flusso. |
GetObjectData(SerializationInfo, StreamingContext) |
Obsoleti.
Implementazione del metodo GetObjectData(SerializationInfo, StreamingContext) chiamato quando l'oggetto viene serializzato in un flusso. (Ereditato da FaultException) |
GetType() |
Ottiene il tipo di runtime dell'istanza corrente. (Ereditato da Exception) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto FaultException<TDetail>. |
Eventi
SerializeObjectState |
Obsoleti.
Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione. (Ereditato da Exception) |