13

ASP.Net MVC と WebAPI プロジェクトがいくつかあります。それらのほとんどは最新です (MVC 5 / WebAPI 2)。システム全体のセキュリティを統一するためにグローバル フィルター (MVC 用) と委任ハンドラー (WebAPI 用) を実装しているので、セキュリティの前提を再確認してきました。

その文脈で、私はいくつかの記事や投稿 (以下を参照) に出くわしました (以下を参照UseTaskFriendlySynchronizationContext) 。MVC 5 および WebAPI 2 の新しいプロジェクト テンプレート (および ASP.Net WebForms テンプレート) を使用する VS2013 でも、このアプリ設定がまったく設定されていないため、これは奇妙に思えます。truefalse

この設定に関する MSDN ドキュメントは実質的に存在せず、非同期プログラミングに必要であると述べている投稿は、WebForms のコンテキストにあるようです。

だからここに私の質問があります:

  1. この設定はすべての ASP.Net に適用されますか、それとも ASP.Net のページ ライフサイクルに固有のものですか (あまり使用していません)。
  2. 最新の非同期プログラミングにとって非常に重要である場合、チュートリアルやテンプレートで参照されないのはなぜですか?
  3. ConfigureAwait(false) を使用する参照ライブラリで Thread.CurrentPrincipal のクレームを使用すると、問題が発生しますか、それとも ExecutionContext の論理呼び出しコンテキストの流れによって処理されますか? (これまでの私の読書とテストは、そうであることを示しています)

に関して私が見た記事のいくつかを次に示しますUseTaskFriendlySynchronizationContext

このすべてがどのように機能するかを理解するのに本当に役立ったいくつかの記事は、言及されていませんUseTaskFriendlySynchronizationContext:

4

1 に答える 1

15

欠落している重要なリファレンスは、このブログ投稿です。具体的には、 を設定するか、UseTaskFriendlySynchronizationContext 設定する必要があります。新しいプロジェクトを作成すると に設定されるため、正しい動作が得られます (は暗黙的に に設定されます)。targetFramework4.5targetFramework4.5UseTaskFriendlySynchronizationContexttrue

特定の質問に答えるには:

  1. この設定は、Web フォームだけでなく、すべての種類の要求に対する ASP.NET 要求処理に影響します。
  2. ほとんどのasyncチュートリアルでは、GUI アプリケーションのシナリオを想定しています。
  3. わからない; これは別の質問としてより良いと思います。私の直感では、ASP.NET コンテキストを離れた後は依存できなくなります。Thread.CurrentPrincipal
于 2013-12-09T19:43:29.563 に答える