Sdílet prostřednictvím


FaultException<TDetail> Třída

Definice

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)

Platí pro