MessageFault 類別

定義

表示 SOAP 錯誤在記憶體中的表示,此錯誤可傳遞給 CreateMessage 來建立包含錯誤的訊息。

public ref class MessageFault abstract
public abstract class MessageFault
type MessageFault = class
Public MustInherit Class MessageFault
繼承
MessageFault

範例

下列程式碼範例會示範 MessageFault 最常見的使用方式。 ProvideFaultHandleError 都會傳入 MessageFault 物件,該物件可加以修改及傳回給系統 (如果是 ProvideFault),或是用來執行某些與自訂錯誤相關的行為 (如果是 HandleError)。

在此範例中 ProvideFault ,方法會將所有 Exception 物件轉換成 MessageFault 包含 FaultException<TDetail>GreetingFault 別物件的 物件,並傳回自訂 MessageFault 至 WCF 的物件。

#region IErrorHandler Members
public bool HandleError(Exception error)
{
  Console.WriteLine("HandleError called.");
  // Returning true indicates you performed your behavior.
  return true;
}

// This is a trivial implementation that converts Exception to FaultException<GreetingFault>.
public void ProvideFault(
  Exception error,
  MessageVersion ver,
  ref Message msg
)
{
  Console.WriteLine("ProvideFault called. Converting Exception to GreetingFault....");
  FaultException<GreetingFault> fe
    = new FaultException<GreetingFault>(new GreetingFault(error.Message));
  MessageFault fault = fe.CreateMessageFault();
  msg = Message.CreateMessage(
    ver,
    fault,
    "http://microsoft.wcf.documentation/ISampleService/SampleMethodGreetingFaultFault"
  );
}
#endregion
#Region "IErrorHandler Members"
Public Function HandleError(ByVal [error] As Exception) As Boolean Implements IErrorHandler.HandleError
  Console.WriteLine("HandleError called.")
  ' Returning true indicates you performed your behavior.
  Return True
End Function

' This is a trivial implementation that converts Exception to FaultException<GreetingFault>.
Public Sub ProvideFault(ByVal [error] As Exception, ByVal ver As MessageVersion, ByRef msg As Message) Implements IErrorHandler.ProvideFault
  Console.WriteLine("ProvideFault called. Converting Exception to GreetingFault....")
  Dim fe As New FaultException(Of GreetingFault)(New GreetingFault([error].Message))
  Dim fault As MessageFault = fe.CreateMessageFault()
  msg = Message.CreateMessage(ver, fault, "http://microsoft.wcf.documentation/ISampleService/SampleMethodGreetingFaultFault")
End Sub
#End Region

備註

每當您需要記憶體中的 SOAP 錯誤 (該錯誤可加以修改並用來建立包含錯誤資訊的 SOAP 訊息) 時,請使用 MessageFault 類別。

一般來說,當您程式設計 MessageFault 介面時,會使用 IErrorHandler 類別。 在此情況下,Windows Communication Foundation (WCF) 傳遞 MessageFault 物件,而且例如,您可以自訂 MessageFault 或 來記錄錯誤資訊 () 的特定需求。 但是,MessageFault 可用於需要自訂 SOAP 錯誤訊息處理的任何地方。

建構函式

MessageFault()

在衍生類別中呼叫時,初始化 MessageFault 類別的新執行個體。

屬性

Actor

取得或設定 Actor 的值。

Code

取得 SOAP 錯誤碼。

HasDetail

取得值,此值指出 MessageFault 是否有詳細資料物件。

IsMustUnderstandFault

取得或設定值,這個值指出此錯誤是否因為無法瞭解 SOAP 標頭所產生。

Node

取得 SOAP 節點,此節點包含訊息路徑上哪個 SOAP 節點造成錯誤的相關資訊。

Reason

取得 SOAP 錯誤的文字描述。

方法

CreateFault(FaultCode, FaultReason)

傳回新的 MessageFault 物件,此物件會使用指定的 FaultCodeFaultReason 物件。

CreateFault(FaultCode, FaultReason, Object)

傳回新的 MessageFault 物件,此物件會使用指定的 FaultCodeFaultReason 和詳細資料物件。

CreateFault(FaultCode, FaultReason, Object, XmlObjectSerializer)

傳回新的 MessageFault 物件,此物件會使用指定的 FaultCodeFaultReason、詳細資料物件和 XmlObjectSerializer 物件。

CreateFault(FaultCode, FaultReason, Object, XmlObjectSerializer, String)

傳回新的 MessageFault 物件,此物件會使用指定的 FaultCodeFaultReason、詳細資料物件、XmlObjectSerializer 和 Actor。

CreateFault(FaultCode, FaultReason, Object, XmlObjectSerializer, String, String)

傳回新的 MessageFault 物件,此物件會使用指定的 FaultCodeFaultReason、詳細資料物件、XmlObjectSerializer、Actor 和節點值。

CreateFault(FaultCode, String)

傳回新的 MessageFault 物件,此物件會使用指定的 FaultCode 和錯誤原因。

CreateFault(Message, Int32)

傳回新的 MessageFault 物件,此物件使用指定的 Message 及訊息緩衝區所指定的緩衝區大小上限。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetDetail<T>()

傳回訊息錯誤的詳細資料物件。

GetDetail<T>(XmlObjectSerializer)

傳回使用指定之 XmlObjectSerializer 的詳細資料物件。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetReaderAtDetailContents()

傳回 XmlDictionaryReader 物件,此物件置於 MessageFault 的詳細資料物件上。

GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
OnGetReaderAtDetailContents()

在衍生類別中呼叫時,會傳回 XmlDictionaryReader 物件,此物件置於 MessageFault 的詳細資料物件上。

OnWriteDetail(XmlDictionaryWriter, EnvelopeVersion)

在寫入詳細資料內容之前叫用 (Invoke)。

OnWriteDetailContents(XmlDictionaryWriter)

在非抽象衍生類別中覆寫時,會寫入詳細資料項目的內容。

OnWriteStartDetail(XmlDictionaryWriter, EnvelopeVersion)

寫入使用指定之 XmlDictionaryWriter 和 SOAP 信封版本的開始項目。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
WasHeaderNotUnderstood(MessageHeaders, String, String)

取得值,這個值指出是否已瞭解 SOAP 訊息標頭。

WriteTo(XmlDictionaryWriter, EnvelopeVersion)

寫入使用指定之 XmlDictionaryWriter 和 SOAP 信封版本的訊息錯誤。

WriteTo(XmlWriter, EnvelopeVersion)

寫入使用指定之 XmlWriter 和 SOAP 信封版本的訊息錯誤。

適用於