TaskCanceledException
非同期タスクがキャンセルまたはタイムアウトした場合に発生するC#の例外
概要
System.Threading.Tasks.TaskCanceledExceptionは、非同期タスクがキャンセルされた場合に発生します。HttpClientのタイムアウトやCancellationTokenによるキャンセルが主な原因です。
エラーメッセージ
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts)
System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.
原因
- HttpClientのタイムアウト: デフォルト100秒のタイムアウトを超過
- CancellationTokenによるキャンセル: 明示的なキャンセル要求
- サーバーの応答遅延: APIやデータベースの応答が遅い
- HttpClientの不正なライフサイクル: usingブロック内でリクエスト完了前にDispose
解決策
1. HttpClientのタイムアウトを調整する
| |
2. リトライロジックを実装する(Polly使用)
| |
3. CancellationTokenを正しく扱う
| |
4. IHttpClientFactoryを使用する
HttpClientのライフサイクルを適切に管理する。
| |
5. タイムアウトとキャンセルを区別する
| |
関連エラー
- NullReferenceException - null参照アクセスで発生
- InvalidOperationException - 無効な操作で発生
C# の他のエラー
この記事は役に立ちましたか?