1

Web サービスを参照するクライアント アプリケーションがあります。webclientprotocol オブジェクトのタイムアウト プロパティを 50 (ミリ秒) に設定し、何が起こるかを観察したいと考えました。クライアントに巨大な DataSet を返す長時間実行される webmethod を結び付けました。デフォルト値があった場合、DataSet はクライアントに正しく返されました。これを 50(ms) に変更したところ、何も観察されませんでした。タイムアウトが発生したため、クライアント側で何らかの例外が発生すると想定していました。ここで何が起こっているのか誰か説明してもらえますか

ありがとうラージ

4

2 に答える 2

4

ドキュメントは残念ながら不明です。「何も観察していない」と言うとき、正確には何を意味しますか? コードは永遠にハングアップしましたか? 例外がスローされましたか? おそらく、有効な DataSet が返されませんでした。

TimeoutExceptionがスローされることを期待していましたが、クライアント コードではそれが完全に明らかではなかったことに驚いています。例外を飲み込んでいませんよね?

呼び出しを同期または非同期で実行していますか? 非同期の場合は、コールバックが実行され、「EndXxx」呼び出しで例外がスローされると予想されます。

何が起こるかを確認するためだけに、Web サービスを呼び出すだけの短いコンソール アプリケーションを作成することを強くお勧めします。

于 2008-12-12T07:13:00.030 に答える
0

私はちょうどこれに遭遇しました。.NET 2.0 Web サービスでは、それを区別するためWebExceptionのプロパティのみを使用して、かなり不特定の をスローします。Message

要求が中止されました: 接続が予期せず閉じられました。

新しいバージョンの Visual Studio でデフォルトで生成される WCF ベースのサービス参照で試したことはありませんが、これを正しく理解していれば、 Jon SkeetTimeoutExceptionのように、より便利な をスローします。 ) Web サービスでの動作になります。

タイムアウトは同期呼び出し専用であることに注意してください (少なくとも Web サービスでは。WCF サービス参照にも当てはまると思います)。非同期呼び出しをタイムアウトさせたい場合は、タイマーを設定し、ここに示すように呼び出しを手動で中止する必要があります。

于 2011-03-22T02:26:36.230 に答える