Сериализуемое исключение и WCF - PullRequest
1 голос
/ 18 ноября 2009

если я сделал мое исключение сериализуемым, как в этой статье из msdn , то может ли мое исключение сериализоваться через WCF?

Ответы [ 2 ]

1 голос
/ 18 ноября 2009

Да, вы можете сериализовать исключения и возвращать их с WCF. Я написал приложение, в котором клиенту WCF было необходимо иметь реальное исключение, которое произошло на сервере; не только ошибка высокого уровня.

Вот шаги для реализации того, что мы сделали:

1 - Объявить класс EncodedException с однострочным свойством

public class EncodedException 
{
     public string SerializedException {get;set;}
}

2 - в контракте на обслуживание добавьте атрибут, указывающий, что ваша служба может вернуть исключение FaultException.

[ServiceContract()]
public class MyService
{
    [OperationContract]
    [FaultContract(typeof(EncodedException), 
                  ProtectionLevel = ProtectionLevel.EncryptAndSign)]
     public string Method1 ();
}

3 - В вашей реализации сервиса добавьте try / catch во все операции сервиса:

public void Method1()
{
    try
    {
        // some code here
    }
    catch( Exception ex)
    {
        EncodedException encodedException = Helper.SerializeException( ex );
        throw new FaulException<EncodedException>();
    }
}

4 - в коде вашего клиента перехватите исключение и разверните его:

public void someMethod()
{
    try
    {
        serviceClient.Method1();
    }
    catch( FaulException<EncodedException> ex)
    {
        Exception decodedException = Helper.DeserializeException( ex );
        throw new decodedException();
    }
}

5 - Напишите помощнику для сериализации / десериализации исключения. Если вам нужна помощь с этой частью, дайте мне знать.

Надеюсь, это поможет.

0 голосов
/ 18 ноября 2009

Я не понимаю, почему нет, если вы успешно создали объект, который можно сериализовать через классический asmx, тогда в WCF все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...