Condividi tramite


FaultException Classe

Definizione

Rappresenta un errore SOAP.

public ref class FaultException : System::ServiceModel::CommunicationException
public class FaultException : System.ServiceModel.CommunicationException
[System.Serializable]
public class FaultException : System.ServiceModel.CommunicationException
[System.Serializable]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData[]))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData[]))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData))]
public class FaultException : System.ServiceModel.CommunicationException
type FaultException = class
    inherit CommunicationException
[<System.Serializable>]
type FaultException = class
    inherit CommunicationException
[<System.Serializable>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData[]))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData[]))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData))>]
type FaultException = class
    inherit CommunicationException
Public Class FaultException
Inherits CommunicationException
Ereditarietà
Ereditarietà
Derivato
Attributi

Esempio

Nell'esempio di codice seguente viene mostrato l'utilizzo di un blocco try/catch per rilevare e gestire oggetti FaultException generati da un servizio. Ciò si verifica spesso quando si attiva il debug nell'applicazione di servizio.

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 configuration 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();
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      wcfClient.Abort();
      Console.ReadLine();
    }
    // Catch the contractually specified SOAP fault raised here as an exception.
    catch (FaultException<GreetingFault> greetingFault)
    {
      Console.WriteLine(greetingFault.Detail.Message);
      Console.Read();
      wcfClient.Abort();
    }
    // Catch unrecognized faults. This handler receives exceptions thrown by WCF
    // services when ServiceDebugBehavior.IncludeExceptionDetailInFaults
    // is set to true.
    catch (FaultException faultEx)
    {
      Console.WriteLine("An unknown exception was received. "
        + faultEx.Message
        + faultEx.StackTrace
      );
      Console.Read();
      wcfClient.Abort();
    }
    // Standard communication fault handler.
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message + commProblem.StackTrace);
      Console.Read();
      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 configuration 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()
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      wcfClient.Abort()
      Console.ReadLine()
    ' Catch the contractually specified SOAP fault raised here as an exception.
    Catch greetingFault As FaultException(Of GreetingFault)
      Console.WriteLine(greetingFault.Detail.Message)
      Console.Read()
      wcfClient.Abort()
    ' Catch unrecognized faults. This handler receives exceptions thrown by WCF
    ' services when ServiceDebugBehavior.IncludeExceptionDetailInFaults 
    ' is set to true.
    Catch faultEx As FaultException
      Console.WriteLine("An unknown exception was received. " & faultEx.Message + faultEx.StackTrace)
      Console.Read()
      wcfClient.Abort()
    ' Standard communication fault handler.
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message + commProblem.StackTrace)
      Console.Read()
      wcfClient.Abort()
    End Try
  End Sub
End Class

Commenti

Nei servizi, la classe FaultException può essere utilizzata per creare un errore non tipizzato da restituire al client per fini di debug.

Nei client, gli oggetti FaultException possono essere rilevati per gestire errori sconosciuti o generici, ad esempio quelli restituiti da un servizio in cui la proprietà IncludeExceptionDetailInFaults è impostata su true. Poiché la classe FaultException estende la classe CommunicationException, ricordarsi di rilevare qualsiasi oggetto FaultException prima di rilevare gli oggetti CommunicationException se si desidera rilevarli separatamente.

Nota

Anche i servizi duplex possono rilevare gli oggetti FaultException restituiti dalla loro interazione con un client duplex.

In generale, è consigliabile utilizzare l'attributo FaultContractAttribute per progettare i servizi in modo che restituiscano errori SOAP fortemente tipizzati (anziché oggetti eccezione non gestiti) per tutti i casi di errore in cui si desidera che il client richieda informazioni sull'errore. Nei casi elencati di seguito è tuttavia opportuno utilizzare l'eccezione FaultException:

  • Invio di errori SOAP da un servizio per fini di debug.

  • Rilevamento di errori SOAP su un client quando gli errori non appartengono al contratto di servizio.

Quando si desidera che la stringa venga passata al costruttore e recuperata dal client mediante una chiamata al metodo FaultException è possibile generare oggetti FaultException<TDetail>.ToString. Se si specifica un contratto di errore di tipo System.ServiceModel.FaultException<TDetail> in cui il parametro è di tipo System.String, per accedere al valore della stringa è possibile usare la proprietà FaultException<TDetail>.Detail e non il metodo FaultException<TDetail>.ToString.

Per informazioni dettagliate, vedere Specificare e gestire gli errori nei contratti e nei servizi.

Costruttori

FaultException()

Inizializza una nuova istanza della classe FaultException.

FaultException(FaultReason)

Consente di inizializzare una nuova istanza della classe FaultException utilizzando il motivo specificato.

FaultException(FaultReason, FaultCode)

Consente di inizializzare una nuova istanza della classe FaultException utilizzando il motivo e il codice di errore specificati.

FaultException(FaultReason, FaultCode, String)

Consente di inizializzare una nuova istanza della classe FaultException utilizzando il motivo, il codice di errore e il valore di azione specificati.

FaultException(MessageFault)

Consente di inizializzare una nuova istanza della classe FaultException utilizzando i valori di messaggio di errore specificati.

FaultException(MessageFault, String)

Consente di inizializzare una nuova istanza della classe FaultException utilizzando i valori di messaggio di errore specificati e la stringa di azione fornita.

FaultException(SerializationInfo, StreamingContext)

Consente di inizializzare una nuova istanza della classe FaultException utilizzando le informazioni e il contesto di serializzazione specificati quando si deserializza un flusso in un oggetto FaultException.

FaultException(String)

Consente di inizializzare una nuova istanza della classe FaultException con il motivo dell'errore specificato.

FaultException(String, FaultCode)

Consente di inizializzare una nuova istanza della classe FaultException utilizzando il motivo e il codice di errore SOAP specificati.

FaultException(String, FaultCode, String)

Consente di inizializzare una nuova istanza della classe FaultException utilizzando il motivo, il codice di errore e il valore di azione specificati.

Proprietà

Action

Consente di ottenere il valore di azione SOAP relativo al messaggio di errore.

Code

Consente di ottenere il codice dell'errore SOAP.

Data

Ottiene una raccolta di coppie chiave/valore che forniscono informazioni definite dall'utente aggiuntive sull'eccezione.

(Ereditato da Exception)
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.

Reason

Consente di ottenere l'oggetto FaultReason relativo all'errore SOAP.

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

CreateFault(MessageFault, String, Type[])

Restituisce un oggetto FaultException a partire dal messaggio di errore, dall'azione e dalla matrice di tipi di dettaglio specificati.

CreateFault(MessageFault, Type[])

Restituisce un oggetto FaultException a partire dal messaggio di errore e dalla matrice di tipi di dettaglio specificati.

CreateMessageFault()

Restituisce un oggetto MessageFault.

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)

Implementazione del metodo GetObjectData(SerializationInfo, StreamingContext) chiamato quando l'oggetto viene serializzato in un flusso.

GetObjectData(SerializationInfo, StreamingContext)

Quando ne viene eseguito l'override in una classe derivata, imposta il controllo SerializationInfo con le informazioni sull'eccezione.

(Ereditato da Exception)
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()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.

(Ereditato da Exception)

Eventi

SerializeObjectState
Obsoleta.

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.

(Ereditato da Exception)

Si applica a