ASP.NET Web API のいくつかの拡張ポイントを扱うときは、TAP (タスクベースのプログラミング パターン) も扱います。いくつかの時点で、非同期メソッドに継続を提供したい場合がContinueWith
あり、 に渡すデリゲート内でいくつかの処理を行いますContinueWith
。
Brad Wilson がここで詳細に説明したように、継続を提供する場合は SynchronizationContext が不可欠です。私にとって、ASP.NET Web API に戻る必要がある唯一SynchronizationContext
の場所は、遊ぶ必要がある場所HttpContext.Current
(ASP.NET Web API アプリケーションでは絶対にやらないことです) とその場所です。などのスレッドベースの情報を設定する必要がありますThread.CurrentPrincipal
。
SynchronizationContext
問題は、メッセージ ハンドラー、フィルター、フォーマッターなどの一部の拡張ポイントで継続を提供するときに、元に戻りたいと思うことはありますか?