有没有办法在异步WCF调用上获得错误反馈?

时间:2009-01-15 21:13:03

标签: wcf asynchronous

我有一个在同步(阻塞)模式下100%工作的WCF服务,我现在需要重新调用一个调用,以便它使用异步模式。

该服务使用身份验证并执行从客户端到服务器的分块文件传输,因此我将其重新设计为使用“Begin”异步前缀来启动呼叫。

现在我正在通过故意修改用户凭据来测试错误,这会导致调用它尝试传输的文件块的每个部分超时,这需要很长时间。问题是我没有收到任何错误反馈,如果异步调用失败,则无法查看如何获取任何错误。这导致一些非常大的文件根本无法上传,但是客户端没有意识到它,因为没有抛出任何异常。

我有Debug-> Exceptions->勾选所有CLR异常以查看是否有任何异常被吞下但仍然没有。

总而言之,如何从WCF中的异步调用中获得错误反馈?

提前致谢,

赖安

1 个答案:

答案 0 :(得分:1)

服务器为您缓存异常,如果您为异步调用调用结束操作完成方法,它将抛出发生的任何异常。

private void go_Click(object sender, EventArgs e)
{
    client.BeginDoMyStuff(myValue, new AsyncCallback(OnEndDoMyStuff), null);
}

public void OnEndDoMyStuff(IAsyncResult asyncResult)
{
    this.Invoke(new MethodInvoker(delegate() { 
        // This will throw if we have had an error
        client.EndDoMyStuff(asyncResult);
    }));
}