FaultException<TDetail> Klas

Definitie

Wordt gebruikt in een clienttoepassing om contractueel opgegeven SOAP-fouten te ondervangen.

generic <typename TDetail>
public ref class FaultException : System::ServiceModel::FaultException
public class FaultException<TDetail> : System.ServiceModel.FaultException
[System.Serializable]
public class FaultException<TDetail> : System.ServiceModel.FaultException
type FaultException<'Detail> = class
    inherit FaultException
[<System.Serializable>]
type FaultException<'Detail> = class
    inherit FaultException
Public Class FaultException(Of TDetail)
Inherits FaultException

Type parameters

TDetail

Het serialiseerbare foutdetailtype.

Overname
Overname
Afgeleid
Kenmerken

Voorbeelden

In het volgende codevoorbeeld ziet u hoe een service het FaultException<TDetail> type gebruikt om een beheerde uitzondering te genereren die wordt geconverteerd naar de SOAP-fout die is opgegeven door de 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

In het volgende codevoorbeeld ziet u hoe de clientcode eruitziet wanneer deze door de client wordt geïmporteerd met behulp van het hulpprogramma ServiceModel Metadata Utility (Svcutil.exe).

In het volgende codevoorbeeld ziet u hoe een client het FaultException<TDetail> type kan vangen dat de aangepaste SOAP-fout vertegenwoordigt die is opgegeven in het bewerkingscontract.

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

Opmerkingen

Catch the FaultException<TDetail> object in a Windows Communication Foundation (WCF) clienttoepassing om een SOAP-fout af te handelen die contractueel is opgegeven in een bewerkingscontract.

Typische geïmplementeerde services gebruiken de FaultContractAttribute opdracht om formeel alle SOAP-fouten op te geven die een client in de normale uitvoering van een bewerking kan verwachten. Foutinformatie in een FaultContractAttribute wordt weergegeven als een FaultException<TDetail> (waarbij de typeparameter het serialiseerbare foutobject is dat is opgegeven in de bewerking FaultContractAttribute) wanneer deze bij een clienttoepassing aankomt. De FaultContractAttribute kan worden gebruikt om SOAP-fouten op te geven voor zowel tweerichtingsservicemethoden als voor asynchrone methodeparen.

Omdat FaultException<TDetail> dit zowel een als FaultException een CommunicationException, is, om opgegeven SOAP-fouten te vangen, moet u ervoor zorgen dat u de FaultException<TDetail> typen voor de FaultException en CommunicationException typen ondervangt of de opgegeven uitzonderingen in een van deze uitzonderingshandlers afhandelt.

Note

Als u gebruikt System.ServiceModel.FaultContractAttribute om op FaultException<TDetail> te geven waar de typeparameter een System.Stringis, wordt de tekenreekswaarde toegewezen aan de eigenschap in de Detail clienttoepassing. Clients kunnen die tekenreeks niet ophalen door de FaultException<TDetail>.ToString methode aan te roepen. Als u de tekenreekswaarde wilt laten retourneren wanneer de clienttoepassing aanroept Exception.ToString, genereert u een System.ServiceModel.FaultException uitzondering in de bewerking en geeft u de tekenreeks door aan de constructor. Over het algemeen wordt aanbevolen dat detailtypen aangepaste serialiseerbare typen zijn die geschikt zijn voor de fout en niet een System.String.

Constructors

Name Description
FaultException<TDetail>(SerializationInfo, StreamingContext)

Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse met behulp van de opgegeven serialisatie-informatie en -context bij het deserialiseren van een stroom naar een FaultException object.

FaultException<TDetail>(TDetail, FaultReason, FaultCode, String)

Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject en SOAP-foutreden, code en actiewaarden.

FaultException<TDetail>(TDetail, FaultReason, FaultCode)

Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject, de reden van de fout en de foutcode.

FaultException<TDetail>(TDetail, FaultReason)

Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject en de reden van de fout.

FaultException<TDetail>(TDetail, String, FaultCode, String)

Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject en SOAP-foutreden, code en actiewaarden.

FaultException<TDetail>(TDetail, String, FaultCode)

Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject, de reden van de fout en de foutcode.

FaultException<TDetail>(TDetail, String)

Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van de opgegeven details en foutreden.

FaultException<TDetail>(TDetail)

Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject.

Eigenschappen

Name Description
Action

Hiermee haalt u de waarde van de SOAP-actie voor het foutbericht op.

(Overgenomen van FaultException)
Code

Hiermee haalt u de foutcode voor de SOAP-fout op.

(Overgenomen van FaultException)
Data

Hiermee haalt u een verzameling sleutel-waardeparen op die aanvullende door de gebruiker gedefinieerde informatie over de uitzondering bieden.

(Overgenomen van Exception)
Detail

Hiermee haalt u het object op dat de detailgegevens van de foutvoorwaarde bevat.

HelpLink

Hiermee haalt u een koppeling op naar het Help-bestand dat aan deze uitzondering is gekoppeld.

(Overgenomen van Exception)
HResult

Hiermee wordt HRESULT opgehaald of ingesteld, een gecodeerde numerieke waarde die is toegewezen aan een specifieke uitzondering.

(Overgenomen van Exception)
InnerException

Hiermee haalt u het Exception exemplaar op dat de huidige uitzondering heeft veroorzaakt.

(Overgenomen van Exception)
Message

Hiermee wordt het bericht voor de uitzondering ophaalt.

(Overgenomen van FaultException)
Reason

Hiermee haalt u de FaultReason soap-fout op.

(Overgenomen van FaultException)
Source

Hiermee wordt de naam van de toepassing of het object dat de fout veroorzaakt, opgehaald of ingesteld.

(Overgenomen van Exception)
StackTrace

Hiermee haalt u een tekenreeksweergave van de directe frames op de aanroepstack op.

(Overgenomen van Exception)
TargetSite

Hiermee haalt u de methode op waarmee de huidige uitzondering wordt gegenereerd.

(Overgenomen van Exception)

Methoden

Name Description
CreateMessageFault()

Hiermee maakt u een MessageFault object dat kan worden gebruikt om een Message soap-fout te maken.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetBaseException()

Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u de Exception hoofdoorzaak van een of meer volgende uitzonderingen.

(Overgenomen van Exception)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetObjectData(SerializationInfo, StreamingContext)

Implementatie van de GetObjectData(SerializationInfo, StreamingContext) methode die wordt aangeroepen wanneer het object in een stroom wordt geserialiseerd.

GetType()

Hiermee haalt u het runtimetype van het huidige exemplaar op.

(Overgenomen van Exception)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks voor het FaultException<TDetail> object.

gebeurtenis

Name Description
SerializeObjectState

Treedt op wanneer een uitzondering wordt geserialiseerd om een uitzonderingsstatusobject te maken dat geserialiseerde gegevens over de uitzondering bevat.

(Overgenomen van Exception)

Van toepassing op