0

WCFサービスメソッド(同期)があります。このメソッドは、(COMを介して)別のプロセスを呼び出して、いくつかの処理を実行します。これで、このCOMプロセスが完了するまでに約10〜15秒かかり、その後、サービスへの呼び出しが返されます。サービスはクライアントに返される必要があります。

WCFクライアント側では、sendtimeoutが5秒に設定されているため、5秒後にクライアントでタイムアウト例外が発生します。

ここで私の質問は、クライアントがタイムアウト例外を受け取った後、サービス側で何が起こるかです。COMプロセスの呼び出しはまだ進行中であり、さらに5〜10秒後にサービスに戻る可能性があるため、サービスがこのシナリオを処理する方法。

さらに入力が必要な場合はお知らせください。

よろしく、

4

1 に答える 1

0

Afaik、クライアント側で例外がスローされますが、サービスは操作を続行します。長時間実行する操作がある場合は、非同期呼び出しをチェックアウトすることができます。

更新: これが不可能で、同じ理由でタイムアウトを増やすことができない場合、タイムアウト例外を回避する方法がわかりません。回復するいくつかの方法:

  • クライアントのタイムアウト時にサーバー操作を中止する場合は、のようなサービス操作を追加CancelCOMCallし、クライアントがをキャッチしたときにクライアントから呼び出すとTimeoutException、COMプロセスが強制終了されます。

  • 操作を完了させたいが、クライアントからの重複呼び出し(タイムアウト例外後の再試行によって引き起こされる)を防ぎたい場合は、クライアントごとに実行されているCOM操作を保存し、すでに実行されているプロセスの呼び出しを破棄できます。

I'd agree neither method is very neat, but it looks a little difficult to me without asynchronous calls. I'm not a WCF expert though.

于 2011-05-17T07:20:46.033 に答える