Поделиться через


Ошибки XmlSerializer

В примере XmlSerializerFaults показано, как передавать сведения об ошибках из службы клиенту с помощью .XmlSerializer Пример основан на начале работы с дополнительным кодом, добавленным в службу для преобразования внутреннего исключения в ошибку. Клиент пытается выполнить операцию деления на ноль для принудительного сбоя службы.

Примечание.

Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.

В контракт калькулятора добавлен атрибут FaultContractAttribute, как показано в следующем образце кода. Кроме того, XmlSerializerFormatAttribute используется для включения сериализации с использованием XmlSerializer. Свойству SupportFaults присвоено значение true для этого атрибута, которое инструктирует сериализатор использовать XmlSerializer для чтения и записи сбоев.

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

При создании кода для прокси-сервера клиента необходимо применить флаг /UseSerializerForFaults к средству служебной программы метаданных ServiceModel (Svcutil.exe).

Настройка, сборка и выполнение образца

  1. Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.

  2. Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.

  3. Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".

См. также