13

Ich habe ein paar ASP.Net MVC und WebAPI-Projekte. Die meisten von ihnen sind auf dem neuesten Stand (MVC 5/WebAPI 2). Ich habe meine Sicherheitsannahmen doppelt überprüft, seit ich einen globalen Filter (für MVC) und einen delegierenden Handler (für WebAPI) implementiere, um die Sicherheit im System zu vereinheitlichen.ASP.Net vs MVC vs WebAPI und UseTaskFriendlySynchronizationContext

In diesem Zusammenhang habe ich über ein paar Artikel und Beiträge kommen (siehe unten), die Sie immer UseTaskFriendlySynchronizationContext zu true (wird standardmäßig false) werden Einstellung sagen sollte. Das erscheint mir seltsam, da selbst in VS2013, die MVC 5 und WebAPI 2 verwenden, neue Projektvorlagen (sowie die ASP.Net WebForms Vorlage) diese App-Einstellung überhaupt nicht festlegen.

Die MSDN-Dokumentation zu dieser Einstellung ist praktisch nicht vorhanden und die Posts, die ich finde, dass es für asynchrone Programmierung erforderlich ist, scheinen im Kontext von WebForms zu sein.

So sind hier meine Fragen:

  1. diese Einstellung auf alles ASP.Net Gegenstandslos oder ist es spezifisch auf die Seite Lifecycle Sachen in ASP.Net (was ich nicht viel benutzt habe)
  2. Wenn es für die moderne asynchrone Programmierung so wichtig ist, warum verweisen keine Tutorials oder Vorlagen darauf?
  3. Würden die Ansprüche von Thread.CurrentPrincipal in einer referenzierten Bibliothek, die ConfigureAwait (false) verwendet, irgendwelche Probleme darstellen, oder wird sich der Ablauf des logischen Aufrufkontexts von ExecutionContext dort einstellen? (Meine Lektüre und Prüfung so gibt weit, dass es wird)

Hier sind einige der Artikel, die ich in Bezug auf UseTaskFriendlySynchronizationContext gesehen habe:

Einige Artikel, die mir wirklich auf einen Griff bekommen geholfen, wie das alles Zeug funktioniert, dass UseTaskFriendlySynchronizationContext nie erwähnen:

Antwort

15

Die fehlende Schlüsselreferenz ist this blog post. Insbesondere müssen Sie entweder UseTaskFriendlySynchronizationContextoder Set targetFramework bis 4.5. Das Erstellen eines neuen Projekts setzt auf 4.5, damit Sie das richtige Verhalten erhalten (UseTaskFriendlySynchronizationContext ist implizit auf true festgelegt).

Ihre spezifischen Fragen zu beantworten:

  1. Die Einstellung wirkt sich für alle Arten von Anfragen Umgang mit ASP.NET-Anforderung, nicht nur WebForms.
  2. Die meisten async Tutorials gehen von einem GUI-Anwendungsszenario aus.
  3. Ich bin mir nicht sicher; Ich denke, das wäre besser als separate Frage. Mein Bauchgefühl ist, dass Sie nicht von Thread.CurrentPrincipal abhängen können, nachdem Sie den ASP.NET-Kontext verlassen.
+0

Ich zog # 3 in seine eigene Frage mit einigen schnellen Beispielcode. Wenn Sie eine Chance haben, das zu sehen, würde ich es wirklich schätzen! ([Security, Thread.CurrentPrincipal und ConfigureAwait (false)] (http://stackoverflow.com/questions/20479888/security-thread-currentprincipal-and-configureawaitfalse)) –