Compartir vía


Errores de XmlSerializer

En el ejemplo XmlSerializerFaults se muestra cómo comunicar información de error de un servicio a un cliente mediante XmlSerializer. El ejemplo se basa en Guía de inicio, con código adicional que se ha agregado al servicio para convertir una excepción interna en una falla. El cliente intenta realizar una división por cero para forzar una condición de error en el servicio.

Nota:

El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

El contrato de la calculadora se ha modificado para incluir un FaultContractAttribute, tal como se muestra en el siguiente código de ejemplo. Además, se usa el XmlSerializerFormatAttribute para habilitar la serialización mediante el XmlSerializer. La propiedad SupportFaults se establece en true en este atributo, lo que indica al serializador que utilice XmlSerializer para leer y escribir los errores.

[XmlSerializerFormat(SupportFaults=true)]
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
    [OperationContract]
    int Add(int n1, int n2);

    [OperationContract]
    int Subtract(int n1, int n2);

    [OperationContract]
    int Multiply(int n1, int n2);

    [OperationContract]
    [FaultContract(typeof(MathFault))]
    int Divide(int n1, int n2);
}

Al generar código para el proxy de cliente, se debe aplicar la marca /UseSerializerForFaults a la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe).

Para configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  2. Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.

  3. Para ejecutar el ejemplo en una configuración de una máquina única o entre máquinas, siga las instrucciones de Ejecución de los ejemplos de Windows Communication Foundation.

Consulte también