FaultException<TDetail> Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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) |