FaultException<TDetail> Klasa

Definicja

Używany w aplikacji klienckiej do przechwytywania usterek określonych umownie protokołu SOAP.

C#
public class FaultException<TDetail> : System.ServiceModel.FaultException
C#
[System.Runtime.Serialization.KnownType("GetKnownTypes")]
[System.Serializable]
public class FaultException<TDetail> : System.ServiceModel.FaultException
C#
[System.Serializable]
public class FaultException<TDetail> : System.ServiceModel.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.

C#
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
  }
}

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.

C#
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();
    }
  }
}

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)

Dotyczy

Produkt Wersje
.NET Core 1.0, Core 1.1, 8
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
UWP 10.0