FaultException<TDetail> Kelas

Definisi

Digunakan dalam aplikasi klien untuk menangkap kesalahan SOAP yang ditentukan secara kontraktual.

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

Jenis parameter

TDetail

Jenis detail kesalahan yang dapat diserialisasikan.

Warisan
Warisan
Turunan
Atribut

Contoh

Contoh kode berikut menunjukkan bagaimana layanan menggunakan FaultException<TDetail> jenis untuk melemparkan pengecualian terkelola yang dikonversi menjadi kesalahan SOAP yang ditentukan oleh 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

Contoh kode berikut menunjukkan tampilan kode klien saat diimpor oleh klien menggunakan Alat Utilitas Metadata ServiceModel (Svcutil.exe).

Contoh kode berikut menunjukkan bagaimana klien dapat menangkap FaultException<TDetail> jenis yang mewakili kesalahan SOAP kustom yang ditentukan dalam kontrak operasi.

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

Keterangan

FaultException<TDetail> Tangkap objek dalam aplikasi klien Windows Communication Foundation (WCF) untuk menangani kesalahan SOAP yang telah ditentukan secara kontraktual dalam kontrak operasi.

Layanan umum yang FaultContractAttribute disebarkan menggunakan untuk secara resmi menentukan semua kesalahan SOAP yang dapat diterima klien dalam operasi normal. Informasi kesalahan dalam FaultContractAttribute muncul sebagai FaultException<TDetail> (di mana typeparameter adalah objek kesalahan yang dapat diserialisasikan yang ditentukan dalam operasi FaultContractAttribute) ketika tiba di aplikasi klien. FaultContractAttribute dapat digunakan untuk menentukan kesalahan SOAP untuk metode layanan dua arah dan untuk pasangan metode asinkron.

Karena FaultException<TDetail> merupakan FaultException dan oleh karena itu CommunicationException, untuk menangkap kesalahan SOAP tertentu, pastikan Anda menangkap FaultException<TDetail> jenis sebelum FaultException dan CommunicationException atau menangani pengecualian yang ditentukan di salah satu penangan pengecualian tersebut.

Catatan

Jika Anda menggunakan System.ServiceModel.FaultContractAttribute untuk menentukan FaultException<TDetail> di mana parameter jenis adalah System.String, nilai string ditetapkan ke Detail properti di aplikasi klien; klien tidak dapat mengambil string tersebut FaultException<TDetail>.ToString dengan memanggil metode . Agar nilai string dikembalikan saat aplikasi klien memanggil Exception.ToString, berikan System.ServiceModel.FaultException pengecualian di dalam operasi dan teruskan string ke konstruktor. Secara umum, disarankan agar jenis detail menjadi jenis serialisasi kustom yang sesuai dengan kesalahan dan bukan System.String.

Konstruktor

FaultException<TDetail>(SerializationInfo, StreamingContext)

Menginisialisasi instans FaultException<TDetail> baru kelas menggunakan informasi dan konteks serialisasi yang ditentukan saat mendeserialisasi aliran ke dalam FaultException objek.

FaultException<TDetail>(TDetail)

Menginisialisasi instans FaultException<TDetail> baru kelas yang menggunakan objek detail yang ditentukan.

FaultException<TDetail>(TDetail, FaultReason)

Menginisialisasi instans FaultException<TDetail> baru kelas yang menggunakan objek detail dan alasan kesalahan yang ditentukan.

FaultException<TDetail>(TDetail, FaultReason, FaultCode)

Menginisialisasi instans FaultException<TDetail> baru kelas yang menggunakan objek detail, alasan kesalahan, dan kode kesalahan yang ditentukan.

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

Menginisialisasi instans FaultException<TDetail> baru kelas yang menggunakan objek detail yang ditentukan, dan alasan kesalahan SOAP, kode, dan nilai tindakan.

FaultException<TDetail>(TDetail, String)

Menginisialisasi instans FaultException<TDetail> baru kelas yang menggunakan detail dan alasan kesalahan yang ditentukan.

FaultException<TDetail>(TDetail, String, FaultCode)

Menginisialisasi instans FaultException<TDetail> baru kelas yang menggunakan objek detail, alasan kesalahan, dan kode kesalahan yang ditentukan.

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

Menginisialisasi instans FaultException<TDetail> baru kelas yang menggunakan objek detail yang ditentukan, dan alasan kesalahan SOAP, kode, dan nilai tindakan.

Properti

Action

Mendapatkan nilai tindakan SOAP untuk pesan kesalahan.

(Diperoleh dari FaultException)
Code

Mendapatkan kode kesalahan untuk kesalahan SOAP.

(Diperoleh dari FaultException)
Data

Mendapatkan kumpulan pasangan kunci/nilai yang memberikan informasi tambahan yang ditentukan pengguna tentang pengecualian.

(Diperoleh dari Exception)
Detail

Mendapatkan objek yang berisi informasi detail kondisi kesalahan.

HelpLink

Mendapatkan atau mengatur tautan ke file bantuan yang terkait dengan pengecualian ini.

(Diperoleh dari Exception)
HResult

Mendapatkan atau menetapkan HRESULT, nilai numerik berkode yang ditetapkan ke pengecualian tertentu.

(Diperoleh dari Exception)
InnerException

Mendapatkan instans Exception yang menyebabkan pengecualian saat ini.

(Diperoleh dari Exception)
Message

Mendapatkan pesan untuk pengecualian.

(Diperoleh dari FaultException)
Reason

FaultReason Mendapatkan untuk kesalahan SOAP.

(Diperoleh dari FaultException)
Source

Get dan set nama aplikasi atau objek yang menyebabkan kesalahan.

(Diperoleh dari Exception)
StackTrace

Mendapatkan representasi string dari bingkai langsung pada tumpukan panggilan.

(Diperoleh dari Exception)
TargetSite

Mendapatkan metode yang melemparkan pengecualian saat ini.

(Diperoleh dari Exception)

Metode

CreateMessageFault()

MessageFault Membuat objek yang dapat digunakan untuk membuat Message yang mewakili kesalahan SOAP.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetBaseException()

Ketika ditimpa di kelas turunan, mengembalikan Exception yang merupakan akar penyebab dari satu atau beberapa pengecualian berikutnya.

(Diperoleh dari Exception)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetObjectData(SerializationInfo, StreamingContext)
Kedaluwarsa.

GetObjectData(SerializationInfo, StreamingContext) Implementasi metode yang dipanggil ketika objek diserialisasikan ke dalam aliran.

GetObjectData(SerializationInfo, StreamingContext)
Kedaluwarsa.

GetObjectData(SerializationInfo, StreamingContext) Implementasi metode yang dipanggil ketika objek diserialisasikan ke dalam aliran.

(Diperoleh dari FaultException)
GetType()

Mendapatkan jenis runtime instans saat ini.

(Diperoleh dari Exception)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string untuk FaultException<TDetail> objek .

Acara

SerializeObjectState
Kedaluwarsa.

Terjadi ketika pengecualian diserialisasikan untuk membuat objek status pengecualian yang berisi data berseri tentang pengecualian.

(Diperoleh dari Exception)

Berlaku untuk