2

我想调用一个可以抛出 FaultException 的 wcf 服务,但我想异步执行此操作。如果一切正常,它不会返回异常,但如果服务抛出我的一个 FaultExceptions,在客户端中我会得到一个 CommunicationObjectFaultedException,并且它的所有属性都不包含我原来的 FaultException。

从到目前为止我可以了解到的信息是信息存储在其他地方。谁能告诉我它到底在哪里

例如,这两个处理用户的注册:

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

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

1 回答 1

1

一个过于简单的示例,但这是您获取自定义故障详细信息的方式:

    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());
            }
        }            
    }
于 2011-02-26T19:59:45.330 回答