我想调用一个可以抛出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); }
}
答案 0 :(得分: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());
}
}
}