FaultException<TDetail> Sınıf

Tanım

Sözleşmeyle belirtilen SOAP hatalarını yakalamak için bir istemci uygulamasında kullanılır.

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

Tür Parametreleri

TDetail

Serileştirilebilir hata ayrıntı türü.

Devralma
Devralma
Türetilmiş
Öznitelikler

Örnekler

Aşağıdaki kod örneği, bir hizmetin tarafından belirtilen FaultContractAttributeSOAP hatasına dönüştürülen yönetilen bir özel durum oluşturmak için türünü nasıl kullandığını FaultException<TDetail> gösterir.

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

Aşağıdaki kod örneği , ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) kullanılarak istemci tarafından içeri aktarıldığında istemci kodunun nasıl göründüğünü gösterir.

Aşağıdaki kod örneği, bir istemcinin FaultException<TDetail> işlem sözleşmesinde belirtilen özel SOAP hatasını temsil eden türü nasıl yakalayabileceğini gösterir.

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

Açıklamalar

FaultException<TDetail> Bir işlem sözleşmesinde sözleşmeyle belirtilmiş bir SOAP hatasını işlemek için bir Windows Communication Foundation (WCF) istemci uygulamasında nesnesini yakalayın.

Tipik dağıtılan hizmetler, istemcinin FaultContractAttribute bir işlemin normal seyrinde almayı bekleyebileceği tüm SOAP hatalarını resmi olarak belirtmek için öğesini kullanır. içindeki FaultContractAttribute hata bilgileri bir istemci uygulamasına ulaştığında bir FaultException<TDetail> olarak görünür (burada typeparameter, işlemin FaultContractAttributeiçinde belirtilen serileştirilebilir hata nesnesidir). hem FaultContractAttribute iki yönlü hizmet yöntemleri hem de zaman uyumsuz yöntem çiftleri için SOAP hatalarını belirtmek için kullanılabilir.

hem FaultException<TDetail> a FaultException hem de dolayısıyla bir CommunicationExceptionolduğundan, belirtilen SOAP hatalarını yakalamak için ve CommunicationException türlerinden önceki FaultException türleri yakalamayı FaultException<TDetail> veya bu özel durum işleyicilerinden birinde belirtilen özel durumları işlemeyi unutmayın.

Not

tür parametresinin bir System.Stringolduğu konumu belirtmek FaultException<TDetail> için kullanırsanızSystem.ServiceModel.FaultContractAttribute, dize değeri istemci uygulamasındaki özelliğine Detail atanır; istemciler yöntemini çağırarak bu dizeyi FaultException<TDetail>.ToString alamaz. İstemci uygulaması çağırdığında Exception.ToStringdize değerinin döndürülmüş olması için, işlemin içinde bir System.ServiceModel.FaultException özel durum oluşturun ve dizeyi oluşturucuya geçirin. Genel olarak, ayrıntı türlerinin hataya değil hataya System.Stringuygun özel serileştirilebilir türler olması önerilir.

Oluşturucular

FaultException<TDetail>(SerializationInfo, StreamingContext)

Bir akışı bir nesnede FaultException<TDetail> seri durumdan çıkarırken belirtilen serileştirme bilgilerini ve bağlamını kullanarak sınıfının yeni bir FaultException örneğini başlatır.

FaultException<TDetail>(TDetail)

Belirtilen ayrıntı nesnesini kullanan sınıfının yeni bir örneğini FaultException<TDetail> başlatır.

FaultException<TDetail>(TDetail, FaultReason)

Belirtilen ayrıntı nesnesini ve hata nedenini kullanan sınıfının yeni bir örneğini FaultException<TDetail> başlatır.

FaultException<TDetail>(TDetail, FaultReason, FaultCode)

Belirtilen ayrıntı nesnesini, hata nedenini ve hata kodunu kullanan sınıfın yeni bir örneğini FaultException<TDetail> başlatır.

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

Belirtilen ayrıntı nesnesini ve SOAP hata nedeni, kod ve eylem değerlerini kullanan sınıfın yeni bir örneğini FaultException<TDetail> başlatır.

FaultException<TDetail>(TDetail, String)

Belirtilen ayrıntı ve hata nedenini kullanan sınıfının yeni bir örneğini FaultException<TDetail> başlatır.

FaultException<TDetail>(TDetail, String, FaultCode)

Belirtilen ayrıntı nesnesini, hata nedenini ve hata kodunu kullanan sınıfın yeni bir örneğini FaultException<TDetail> başlatır.

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

Belirtilen ayrıntı nesnesini ve SOAP hata nedeni, kod ve eylem değerlerini kullanan sınıfın yeni bir örneğini FaultException<TDetail> başlatır.

Özellikler

Action

Hata iletisi için SOAP eyleminin değerini alır.

(Devralındığı yer: FaultException)
Code

SOAP hatası için hata kodunu alır.

(Devralındığı yer: FaultException)
Data

Özel durum hakkında kullanıcı tanımlı ek bilgiler sağlayan bir anahtar/değer çifti koleksiyonu alır.

(Devralındığı yer: Exception)
Detail

Hata koşulunun ayrıntı bilgilerini içeren nesneyi alır.

HelpLink

Bu özel durumla ilişkili yardım dosyasının bağlantısını alır veya ayarlar.

(Devralındığı yer: Exception)
HResult

Belirli bir özel duruma atanan kodlanmış sayısal bir değer olan HRESULT değerini alır veya ayarlar.

(Devralındığı yer: Exception)
InnerException

Geçerli özel duruma Exception neden olan örneği alır.

(Devralındığı yer: Exception)
Message

Özel durum için iletiyi alır.

(Devralındığı yer: FaultException)
Reason

SOAP hatası için öğesini FaultReason alır.

(Devralındığı yer: FaultException)
Source

Hataya neden olan uygulamanın veya nesnenin adını alır veya ayarlar.

(Devralındığı yer: Exception)
StackTrace

Çağrı yığınındaki anlık çerçevelerin dize gösterimini alır.

(Devralındığı yer: Exception)
TargetSite

Geçerli özel durumu oluşturan yöntemini alır.

(Devralındığı yer: Exception)

Yöntemler

CreateMessageFault()

MessageFault SOAP hatasını temsil eden bir oluşturmak için kullanılabilecek bir Message nesne oluşturur.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetBaseException()

Türetilmiş bir sınıfta geçersiz kılındığında, sonraki bir veya daha fazla özel durumun kök nedeni olan değerini döndürür Exception .

(Devralındığı yer: Exception)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetObjectData(SerializationInfo, StreamingContext)
Geçersiz.

GetObjectData(SerializationInfo, StreamingContext) Nesne bir akışta seri hale getirildiğinde çağrılan yöntemin uygulanması.

GetObjectData(SerializationInfo, StreamingContext)
Geçersiz.

GetObjectData(SerializationInfo, StreamingContext) Nesne bir akışta seri hale getirildiğinde çağrılan yöntemin uygulanması.

(Devralındığı yer: FaultException)
GetType()

Geçerli örneğin çalışma zamanı türünü alır.

(Devralındığı yer: Exception)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Nesne için FaultException<TDetail> bir dize döndürür.

Ekinlikler

SerializeObjectState
Geçersiz.

Bir özel durum, özel durum hakkında serileştirilmiş veriler içeren bir özel durum nesnesi oluşturmak üzere seri hale getirildiğinde gerçekleşir.

(Devralındığı yer: Exception)

Şunlara uygulanır