13

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

この文脈では、UseTaskFriendlySynchronizationContexttrue(デフォルトはfalse)に設定する必要があると言っている記事と投稿(下記参照)があります。これはMVC 5とWebAPI 2の新しいプロジェクトテンプレート(ASP.Net WebFormsテンプレートと同様)を使用してVS2013でさえこのアプリケーション設定をまったく設定しないので、私にとっては奇妙に思えます。

この設定に関するMSDNのドキュメントはほとんど存在せず、非同期プログラミングに必要とされていると判明した投稿はWebFormsのコンテキスト内にあるようです。だからここ

は私の質問です:

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

は私がUseTaskFriendlySynchronizationContextについて見てきた記事の一部です(私の読書と試験はこれまでのところ、それがすることを示します)

  • Why is an "await Task.Yield()" required for Thread.CurrentPrincipal to flow correctly?
  • 本当に私はこのすべてのものがUseTaskFriendlySynchronizationContextに言及したことがないことをどのように機能するかについて理解を得る助けたいくつかの記事は:

    答えて

    15

    不足しているキー参照がthis blog postです。具体的には、UseTaskFriendlySynchronizationContextまたはと設定してから4.5に設定する必要があります。新しいプロジェクトを作成すると、targetFramework4.5に設定されるため、正しい動作が得られます(UseTaskFriendlySynchronizationContextは暗黙的にtrueに設定されています)。あなたの特定の質問に答えるために

    1. 設定が要求だけでなく、Webフォームのすべての種類の取り扱いASP.NETの要求に影響を与えます。
    2. ほとんどのasyncチュートリアルでは、GUIアプリケーションのシナリオを想定しています。
    3. わかりません。私は別の質問としてこれが良いと思う。私の直感は、に依存することができません。Thread.CurrentPrincipalに依存することは、ASP.NETコンテキストを離れた後です。
    +0

    私は#3を素早いサンプルコードで独自の質問にしました。あなたがそれを見てチャンスを持っているなら、私は本当にそれを感謝します! ([Security、Thread.CurrentPrincipal、およびConfigureAwait(false)](http://stackoverflow.com/questions/20479888/security-thread-currentprincipal-and-configureawaitfalse)) –