Как отловить исключения FaultException от асинхронных вызовов WCF? - PullRequest
2 голосов
/ 26 февраля 2011

Я хотел бы вызвать службу wcf, которая может генерировать FaultException, но я бы хотел сделать это асинхронно.Если все в порядке, он не возвращает исключения, но если служба выдает одно из моих FaultException, в клиенте я получаю CommunicationObjectFaptedException, и ни одно из его свойств не содержит моего исходного FaultException.это то, что информация хранится в другом месте .Кто-нибудь может сказать мне , где точно это?

Например, эти два обрабатывают регистрацию пользователя:

internal void CallRegisterUser()
{
    _service.RegisterUserAsync("username", "pass");
}

void _service_RegisterUserCompleted(object sender, RegisterUserCompletedEventArgs e)
{
    if (e.Error != null) { MessageBox.Show(e.Error.Message); }
}

1 Ответ

1 голос
/ 26 февраля 2011

Упрощенный пример, но именно так вы бы получили свои пользовательские сведения об ошибках:

    void client_RegisterUserCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            if (e.Error is FaultException<UserRegistrationFault>)
            {
                UserRegistrationFault fault = (e.Error as FaultException<UserRegistrationFault>).Detail;
                MessageBox.Show("Error: " + fault.TheExceptionMessage);
            }
            else
            {
                MessageBox.Show("Error: " + e.Error.ToString());
            }
        }            
    }
...