Ошибки 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).
Настройка, сборка и выполнение образца
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".