Falhas do XmlSerializer

O exemplo XmlSerializerFaults demonstra como comunicar informações de erro de um serviço para um cliente usando o XmlSerializer. O exemplo é baseado na Introdução, com algum código adicional adicionado ao serviço para converter uma exceção interna em uma falha. O cliente tenta executar a divisão por zero para forçar uma condição de erro no serviço.

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

O contrato da calculadora foi modificado para incluir um, FaultContractAttribute conforme mostrado no código de exemplo a seguir. Além disso, o XmlSerializerFormatAttribute é usado para habilitar a serialização usando o XmlSerializer. A SupportFaults propriedade é definida como true neste atributo, que instrui o serializador a usar o XmlSerializer para falhas de leitura e gravação.

[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);
}

Ao gerar código para o proxy do cliente, você deve aplicar o sinalizador /UseSerializerForFaults à ServiceModel Metadata Utility Tool (Svcutil.exe).

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

  3. Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.

Consulte também