Compartilhar via


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 no Getting Started, com código adicional incluído 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.

Observação

O procedimento de instalação e as instruções de build 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 propriedade SupportFaults é definida para true nesse atributo, que instrui o serializador a usar o XmlSerializer para ler e gravar falhas.

[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, é preciso aplicar o flag /UseSerializerForFaults à ServiceModel Metadata Utility Tool (SMDT) (Svcutil.exe).

Para configurar, compilar e executar o exemplo

  1. Verifique se você executou o Procedimento de instalação avulsa dos exemplos do Windows Communication Foundation.

  2. Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.

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

Consulte também