FaultException<TDetail> Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Se utiliza en una aplicación cliente para detectar los errores de SOAP especificados contractualmente.
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
Parámetros de tipo
- TDetail
El tipo de detalle de error serializable.
- Herencia
- Herencia
- Derivado
- Atributos
Ejemplos
El ejemplo de código siguiente muestra cómo utiliza un servicio el tipo FaultException<TDetail> para producir una excepción administrada que se convierte en el error de SOAP especificado por 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
En el ejemplo de código siguiente se muestra el aspecto del código de cliente cuando se importa por el cliente mediante la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe).
El ejemplo de código siguiente muestra cómo un cliente puede detectar el tipo FaultException<TDetail> que representa el error de SOAP personalizado especificado en el contrato de la operación.
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
Comentarios
Capture el FaultException<TDetail> objeto en una aplicación cliente de Windows Communication Foundation (WCF) para controlar un error soap que se ha especificado contractualmente en un contrato de operación.
Los servicios implementados típicos utilizan FaultContractAttribute para especificar formalmente todos los errores de SOAP que un cliente puede esperar recibir en el curso normal de una operación. La información de error de un FaultContractAttribute elemento aparece como ( FaultException<TDetail> donde el typeparameter es el objeto de error serializable especificado en la operación FaultContractAttribute) cuando llega a una aplicación cliente. FaultContractAttribute se puede utilizar para especificar los errores de SOAP para los métodos de servicio bidireccionales y para los pares del método asincrónico.
Dado que FaultException<TDetail> es FaultException y, por consiguiente, CommunicationException, para detectar los errores de SOAP especificados le asegurarán que detecta los tipos FaultException<TDetail> antes de los tipos FaultException y CommunicationException o administra las excepciones especificadas en uno de esos controladores de excepciones.
Nota
Si utiliza System.ServiceModel.FaultContractAttribute para especificar un FaultException<TDetail> donde el parámetro de tipo es un System.String, el valor de la cadena se asignará a la propiedad Detail en la aplicación cliente; los clientes no pueden recuperar la cadena llamando al método FaultException<TDetail>.ToString. Para que se devuelva el valor de la cadena cuando la aplicación cliente llama a Exception.ToString, se inicia una excepción System.ServiceModel.FaultException dentro de la operación y se pasa la cadena al constructor. En general, se recomienda que los tipos de detalle sean tipos serializables personalizados apropiados para el error y no un System.String.
Constructores
FaultException<TDetail>(SerializationInfo, StreamingContext) |
Inicializa una nueva instancia de la clase FaultException<TDetail> con los parámetros especificados: la información de serialización y el contexto al deserializar una secuencia en un objeto FaultException. |
FaultException<TDetail>(TDetail) |
Inicializa una instancia nueva de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado. |
FaultException<TDetail>(TDetail, FaultReason) |
Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado y la razón del error. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode) |
Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado, la razón del error y el código del error. |
FaultException<TDetail>(TDetail, FaultReason, FaultCode, String) |
Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado, la razón del error de SOAP, el código y los valores de la acción. |
FaultException<TDetail>(TDetail, String) |
Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el detalle especificado y la razón del error. |
FaultException<TDetail>(TDetail, String, FaultCode) |
Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado, la razón del error y el código del error. |
FaultException<TDetail>(TDetail, String, FaultCode, String) |
Inicializa una nueva instancia de la clase FaultException<TDetail> que utiliza el objeto de detalle especificado, la razón del error de SOAP, el código y los valores de la acción. |
Propiedades
Action |
Obtiene el valor de la acción de SOAP para el mensaje de error. (Heredado de FaultException) |
Code |
Obtiene el código de error para el error de SOAP. (Heredado de FaultException) |
Data |
Obtiene una colección de pares clave/valor que proporciona información definida por el usuario adicional sobre la excepción. (Heredado de Exception) |
Detail |
Obtiene el objeto que contiene la información del detalle de la condición del error. |
HelpLink |
Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción. (Heredado de Exception) |
HResult |
Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica. (Heredado de Exception) |
InnerException |
Obtiene la instancia Exception que produjo la excepción actual. (Heredado de Exception) |
Message |
Obtiene el mensaje para la excepción. (Heredado de FaultException) |
Reason |
Obtiene FaultReason para el error de SOAP. (Heredado de FaultException) |
Source |
Devuelve o establece el nombre de la aplicación o del objeto que generó el error. (Heredado de Exception) |
StackTrace |
Obtiene una representación de cadena de los marcos inmediatos en la pila de llamadas. (Heredado de Exception) |
TargetSite |
Obtiene el método que produjo la excepción actual. (Heredado de Exception) |
Métodos
CreateMessageFault() |
Crea un objeto MessageFault que se puede utilizar para crear un Message que representa el error de SOAP. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetBaseException() |
Cuando se invalida en una clase derivada, devuelve la clase Exception que representa la causa principal de una o más excepciones posteriores. (Heredado de Exception) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Obsoletos.
Implementación del método GetObjectData(SerializationInfo, StreamingContext) al que se llama cuando el objeto se serializa en un flujo. |
GetObjectData(SerializationInfo, StreamingContext) |
Obsoletos.
Implementación del método GetObjectData(SerializationInfo, StreamingContext) al que se llama cuando el objeto se serializa en un flujo. (Heredado de FaultException) |
GetType() |
Obtiene el tipo de tiempo de ejecución de la instancia actual. (Heredado de Exception) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Devuelve una cadena para el objeto FaultException<TDetail>. |
Eventos
SerializeObjectState |
Obsoletos.
Ocurre cuando una excepción se serializa para crear un objeto de estado de excepción que contenga datos serializados sobre la excepción. (Heredado de Exception) |