FaultException<TDetail> Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wordt gebruikt in een clienttoepassing om contractueel opgegeven SOAP-fouten te ondervangen.
generic <typename TDetail>
public ref class FaultException : System::ServiceModel::FaultException
public class FaultException<TDetail> : System.ServiceModel.FaultException
[System.Serializable]
public class FaultException<TDetail> : System.ServiceModel.FaultException
type FaultException<'Detail> = class
inherit FaultException
[<System.Serializable>]
type FaultException<'Detail> = class
inherit FaultException
Public Class FaultException(Of TDetail)
Inherits FaultException
Type parameters
- TDetail
Het serialiseerbare foutdetailtype.
- Overname
- Overname
- Afgeleid
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld ziet u hoe een service het FaultException<TDetail> type gebruikt om een beheerde uitzondering te genereren die wordt geconverteerd naar de SOAP-fout die is opgegeven door de 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
In het volgende codevoorbeeld ziet u hoe de clientcode eruitziet wanneer deze door de client wordt geïmporteerd met behulp van het hulpprogramma ServiceModel Metadata Utility (Svcutil.exe).
In het volgende codevoorbeeld ziet u hoe een client het FaultException<TDetail> type kan vangen dat de aangepaste SOAP-fout vertegenwoordigt die is opgegeven in het bewerkingscontract.
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
Opmerkingen
Catch the FaultException<TDetail> object in a Windows Communication Foundation (WCF) clienttoepassing om een SOAP-fout af te handelen die contractueel is opgegeven in een bewerkingscontract.
Typische geïmplementeerde services gebruiken de FaultContractAttribute opdracht om formeel alle SOAP-fouten op te geven die een client in de normale uitvoering van een bewerking kan verwachten. Foutinformatie in een FaultContractAttribute wordt weergegeven als een FaultException<TDetail> (waarbij de typeparameter het serialiseerbare foutobject is dat is opgegeven in de bewerking FaultContractAttribute) wanneer deze bij een clienttoepassing aankomt. De FaultContractAttribute kan worden gebruikt om SOAP-fouten op te geven voor zowel tweerichtingsservicemethoden als voor asynchrone methodeparen.
Omdat FaultException<TDetail> dit zowel een als FaultException een CommunicationException, is, om opgegeven SOAP-fouten te vangen, moet u ervoor zorgen dat u de FaultException<TDetail> typen voor de FaultException en CommunicationException typen ondervangt of de opgegeven uitzonderingen in een van deze uitzonderingshandlers afhandelt.
Note
Als u gebruikt System.ServiceModel.FaultContractAttribute om op FaultException<TDetail> te geven waar de typeparameter een System.Stringis, wordt de tekenreekswaarde toegewezen aan de eigenschap in de Detail clienttoepassing. Clients kunnen die tekenreeks niet ophalen door de FaultException<TDetail>.ToString methode aan te roepen. Als u de tekenreekswaarde wilt laten retourneren wanneer de clienttoepassing aanroept Exception.ToString, genereert u een System.ServiceModel.FaultException uitzondering in de bewerking en geeft u de tekenreeks door aan de constructor. Over het algemeen wordt aanbevolen dat detailtypen aangepaste serialiseerbare typen zijn die geschikt zijn voor de fout en niet een System.String.
Constructors
| Name | Description |
|---|---|
| FaultException<TDetail>(SerializationInfo, StreamingContext) |
Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse met behulp van de opgegeven serialisatie-informatie en -context bij het deserialiseren van een stroom naar een FaultException object. |
| FaultException<TDetail>(TDetail, FaultReason, FaultCode, String) |
Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject en SOAP-foutreden, code en actiewaarden. |
| FaultException<TDetail>(TDetail, FaultReason, FaultCode) |
Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject, de reden van de fout en de foutcode. |
| FaultException<TDetail>(TDetail, FaultReason) |
Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject en de reden van de fout. |
| FaultException<TDetail>(TDetail, String, FaultCode, String) |
Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject en SOAP-foutreden, code en actiewaarden. |
| FaultException<TDetail>(TDetail, String, FaultCode) |
Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject, de reden van de fout en de foutcode. |
| FaultException<TDetail>(TDetail, String) |
Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van de opgegeven details en foutreden. |
| FaultException<TDetail>(TDetail) |
Initialiseert een nieuw exemplaar van de FaultException<TDetail> klasse die gebruikmaakt van het opgegeven detailobject. |
Eigenschappen
| Name | Description |
|---|---|
| Action |
Hiermee haalt u de waarde van de SOAP-actie voor het foutbericht op. (Overgenomen van FaultException) |
| Code |
Hiermee haalt u de foutcode voor de SOAP-fout op. (Overgenomen van FaultException) |
| Data |
Hiermee haalt u een verzameling sleutel-waardeparen op die aanvullende door de gebruiker gedefinieerde informatie over de uitzondering bieden. (Overgenomen van Exception) |
| Detail |
Hiermee haalt u het object op dat de detailgegevens van de foutvoorwaarde bevat. |
| HelpLink |
Hiermee haalt u een koppeling op naar het Help-bestand dat aan deze uitzondering is gekoppeld. (Overgenomen van Exception) |
| HResult |
Hiermee wordt HRESULT opgehaald of ingesteld, een gecodeerde numerieke waarde die is toegewezen aan een specifieke uitzondering. (Overgenomen van Exception) |
| InnerException |
Hiermee haalt u het Exception exemplaar op dat de huidige uitzondering heeft veroorzaakt. (Overgenomen van Exception) |
| Message |
Hiermee wordt het bericht voor de uitzondering ophaalt. (Overgenomen van FaultException) |
| Reason |
Hiermee haalt u de FaultReason soap-fout op. (Overgenomen van FaultException) |
| Source |
Hiermee wordt de naam van de toepassing of het object dat de fout veroorzaakt, opgehaald of ingesteld. (Overgenomen van Exception) |
| StackTrace |
Hiermee haalt u een tekenreeksweergave van de directe frames op de aanroepstack op. (Overgenomen van Exception) |
| TargetSite |
Hiermee haalt u de methode op waarmee de huidige uitzondering wordt gegenereerd. (Overgenomen van Exception) |
Methoden
| Name | Description |
|---|---|
| CreateMessageFault() |
Hiermee maakt u een MessageFault object dat kan worden gebruikt om een Message soap-fout te maken. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetBaseException() |
Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u de Exception hoofdoorzaak van een of meer volgende uitzonderingen. (Overgenomen van Exception) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Implementatie van de GetObjectData(SerializationInfo, StreamingContext) methode die wordt aangeroepen wanneer het object in een stroom wordt geserialiseerd. |
| GetType() |
Hiermee haalt u het runtimetype van het huidige exemplaar op. (Overgenomen van Exception) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks voor het FaultException<TDetail> object. |
gebeurtenis
| Name | Description |
|---|---|
| SerializeObjectState |
Treedt op wanneer een uitzondering wordt geserialiseerd om een uitzonderingsstatusobject te maken dat geserialiseerde gegevens over de uitzondering bevat. (Overgenomen van Exception) |