2009-01-15 50 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

相關問題