2009-01-15 46 views
0

我有一个在同步(阻塞)模式下工作100%的WCF服务,现在我需要重新调用一个调用,以便它使用异步模式。有没有办法获得有关异步WCF调用的错误反馈?

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

现在我正在通过故意修改导致呼叫在其尝试传输的文件块的每个部分上超时的用户凭据来测试错误,这需要很长时间。问题是,我没有得到任何错误反馈,并且如果异步调用失败,则无法看到如何获取任何错误。这导致一些非常大的文件根本无法上传,但客户端并不知道它,因为没有例外情况发生。

我有调试 - >异常 - >所有CLR异常打勾,看看是否有任何异常被吞噬,但仍然没有。

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

由于提前,

瑞安

+0

更新:我想弄清楚,这是一个正在被分块大型文件,它无法对每个数据块(32K),但不这样做回调,所以我只能在这里看到,该文件已经失败有后处理(并失败)每个块。在1GB文件上有一段时间。 – 2009-01-15 21:30:31

回答

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); 
    })); 
} 
+0

谢谢,我可以看到如何可以正常帮助,但与一个大文件传输它会尝试传输整个文件和超时每个块(花费比正常的文件传输会更长)。我本来希望它能给我立即失败的选择。 – 2009-01-15 21:32:26

相关问题