0

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

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

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

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

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

提前致谢,

瑞安

4

1 回答 1

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);
    }));
}
于 2009-01-15T21:20:15.053 回答