Ошибки 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. Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.

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

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

См. также