0

同期 (ブロッキング) モードで 100% 動作する WCF サービスがあり、非同期パターンを使用するように呼び出しを作り直す必要があります。

このサービスは認証を使用し、クライアントからサーバーへのチャンク ファイル転送を実行するため、'Begin' 非同期プレフィックスを使用して呼び出しを開始するように作り直しました。

現在、転送しようとするファイルチャンクの各部分で呼び出しがタイムアウトする原因となるユーザー資格情報を故意に壊してエラーをテストしています。これには時間がかかります。問題は、エラー フィードバックが得られず、非同期呼び出しが失敗した場合にエラー フィードバックを取得する方法がわからないことです。これにより、一部の非常に大きなファイルのアップロードがまったく失敗しますが、例外がスローされないため、クライアントはそれを認識しません。

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 に答える