Как я могу отправить ошибку по дуплексному каналу?

Клиент и сервер взаимодействуют в дуплексном режиме. У клиента есть универсальный сервис (Action="*") в виде обратного вызова по контракту.

Я хотел бы, чтобы сервер мог отправить ошибку моему клиенту.

Как я могу сделать ?


person Nicolas Dorier    schedule 02.12.2009    source источник


Ответы (1)


Как насчет установки вашего действия на что-то вроде

Action = NotificationData.NotificationAction

NotificationData — это класс MessageContract со свойством MessageId.

[MessageContract]
public class NotificationData
{
    public const string NotificationAction = "http://gfader.com/copied-from/tomasz.janczuk.org";

    [MessageBodyMember]
    public string Message { get; set; }

    [MessageBodyMember]
    public DateTime SendTime { get; set; }

    [MessageBodyMember]
    public MessageIds MessageId { get; set; }
}

Код на клиенте:
если MessageId == 500 --> ошибка сервера

person Peter Gfader    schedule 02.03.2010
comment
на самом деле, мой дизайн немного особенный. Услуги являются дуплексными, но клиенты являются запросами/ответами, и есть маршрутизатор, который переводит вызов запроса/ответа в дуплексный вызов и наоборот. Поэтому мой клиент должен иметь возможность использовать try{}catch(FaultException‹MyFault›){} - person Nicolas Dorier; 03.03.2010
comment
да... звучит интересно... дайте нам знать, когда вы найдете решение по этому вопросу! - person Peter Gfader; 04.03.2010