Как я могу получить причину события клиента Faf WCF? - PullRequest
2 голосов
/ 30 ноября 2009

Как получить код исключения или ошибки, вызвавший событие Failed клиента WCF?

private void ConnectionFaultedHandler(object sender, EventArgs e) 
{
    // Darn! Something went wrong.
    // Better clean up.
    this._Connection.Abort();
    this._Connection.InnerChannel.Faulted -= this.ConnectionFaultedHandler;

    // I'd really like to tell the user some detail of what blew up.
    // But there is no Exception (or similar) property on the event.
    this.NotifyUIOfConnectionFailure(e.Exception);  
}

Обратите внимание, это похоже на эту ветку , за исключением того, что я 1) не смог получить такой способ работы и 2) он, похоже, решает проблему на стороне службы, я хотел бы разобраться с клиентом.

EDIT:

Чтобы уточнить, описанный выше обработчик является частью соединения, которое остается открытым в течение длительного времени (часы или даже дни); он имеет интерфейс обратного вызова для получения данных от службы. Я не спрашиваю об исключениях, когда вы вызываете методы, такие как Open, или методы, являющиеся частью интерфейса контракта, а о сбое, которое возникает из-за того, что (например) кто-то отключил сетевой кабель от вашего ПК, или просто не удалось подключиться к Интернету. *

Представьте, что это происходит через некоторое время после выполнения этого кода:

private void OpenConnection()
{
    try
    {
         this._Connection.Open();
    } 
    catch (Exception ex)
    {
         // Yes, I should be catching CommunicationsException, 
         // and TimeoutException, but space is short on StackOverflow.
         return;
    }

    Debug.Assert(this._Connection.State == Open);

    this._Connection.InnerChannel.Faulted += this.ConnectionFaultedHandler;
}

1 Ответ

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

Ваш вопрос, кстати, не очень понятен

Ошибка получения отличается от получения исключения.

всякий раз, когда вы генерируете объект исключения, который будет получен на клиенте с соответствующим блоком catch.

Ошибка получена в случае проблем с каналом (не подключен) ...

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