Udostępnij za pośrednictwem


Błędy klasy XmlSerializer

Przykład XmlSerializerFaults pokazuje, jak przekazać informacje o błędzie z usługi do klienta przy użyciu polecenia XmlSerializer. Przykład jest oparty na przewodniku Wprowadzenie, z dodatkowym kodem dodanym do usługi w celu przekonwertowania wyjątku wewnętrznego na błąd. Klient próbuje wykonać dzielenie przez zero, aby wymusić błąd w usłudze.

Uwaga

Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

Kontrakt kalkulatora został zmodyfikowany tak, aby zawierał element FaultContractAttribute , jak pokazano w poniższym przykładowym kodzie. XmlSerializerFormatAttribute Ponadto parametr służy do włączania serializacji przy użyciu klasy XmlSerializer. Właściwość jest ustawiona SupportFaultstrue na ten atrybut, który instruuje serializator do XmlSerializer odczytywania i zapisywania błędów.

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

Podczas generowania kodu dla serwera proxy klienta należy zastosować flagę /UseSerializerForFaults do narzędzia ServiceModel Metadata Tool (Svcutil.exe).

Aby skonfigurować, skompilować i uruchomić przykład

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

  3. Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.

Zobacz też