Подтвердить что ты не робот

Сериализация исключений из WCF

У меня есть задача, выполняемая на удаленной системе, соединяющей сервер с WCF. Очень возможно, что задача может генерировать исключения, и я хотел бы, чтобы эти исключения были отправлены обратно на сервер. По сути, я хочу сделать что-то вроде этого:

Клиент:

server.SendException(new UnauthorizedAccessException("Some Exception"));

Сервер:

public void SendException(Exception e)
{
    throw e;
}

Contract:

[ServiceContract]
public interface IServerContract
{
    [OperationContract]
    void SendException(Exception e);
}

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

4b9b3361

Ответ 1

Вам нужно поймать исключения на сервере и упаковать их в ошибки SOAP, чтобы отправить их обратно по проводу. В противном случае ваш клиент-серверный канал будет "неисправен" и неприменим.

Ошибка SOAP - это в основном совместимый SOAP-эквивалент исключения .NET. Вы не должны бросать .NET-исключения из-за того, что они специфичны для .NET. WCF и SOA по определению являются системными-агностиками.

Если оба конца коммуникационного провода действительно гарантированно являются .NET, вы можете легко обернуть любое исключение .NET в FaultException<T> и, таким образом, легко передать обратно специфическую исключительную информацию .NET с использованием транспортного средства, совместимого с SOAP,.

Узнайте больше о ошибках SOAP и о том, как превратить ваши исключения .NET на сервере в ошибки SOAP на провод:

Ответ 2

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