Heim > Backend-Entwicklung > C++ > Warum verursacht Async Void „System.InvalidOperationException' in ASP.NET?

Warum verursacht Async Void „System.InvalidOperationException' in ASP.NET?

Susan Sarandon
Freigeben: 2025-01-04 16:25:39
Original
672 Leute haben es durchsucht

Why Does Async Void Cause `System.InvalidOperationException` in ASP.NET?

Grundlegendes zu Async Void in ASP.Net: Anzahl ausstehender Vorgänge

Problem: Async-Void-Methoden in ASP.Net Bewerbungen führen zu Folgendem Ausnahme:

System.InvalidOperationException: An asynchronous module or handler 
completed while an asynchronous operation was still pending
Nach dem Login kopieren

Erklärung:

Asynchrone Methoden in ASP.Net erhöhen die Anzahl ausstehender Vorgänge beim Aufruf und verringern sie nach Abschluss. Asynchrone Void-Methoden benachrichtigen direkt den ASP.Net SynchronizationContext und umgehen das MVC-Framework.

Task Return vs. Async Void:

Im Gegensatz zu asynchronen Void-Methoden wird eine Aufgabe von zurückgegeben asynchrone Methoden:

  • Ermöglicht dem Framework, die zurückgegebene Aufgabe zu verwalten und darauf zu warten Vervollständigung
  • Sorgt für eine ordnungsgemäße Synchronisierung mit dem Anforderungslebenszyklus
  • Vermeidet die Ausnahme, die durch die vorzeitige Rückkehr von Anforderungen verursacht wird (eine übliche Praxis bei async void)

Im bereitgestellten Beispiel :

  • ThisPageWillLoad() verwendet eine asynchrone Aufgabe, die wie erwartet funktioniert, da das MVC-Framework auf die Rückgabe wartet Aufgabe.
  • ThisPageWillNotLoad() verwendet asynchrones void, was die Ausnahme verursacht, da ASP.Net erwartet, dass die Methode abgeschlossen ist, bevor die Seite vollständig geladen ist, während die asynchrone void-Methode noch nicht abgeschlossen ist.

„Fire and Forget“-Missverständnis:

Asynchrone Void-Methoden sollten nicht verwendet werden werden in ASP.Net als „Fire and Forget“ betrachtet. Auch wenn sie in manchen Szenarien wie „Fire-and-Forget“ wirken, deutet die Semantik der Fehlerbehandlung darauf hin, dass sie nicht wirklich vergesslich sind.

Zusätzliche Überlegungen:

  • Das Zurückgeben einer Aufgabe und die gleichzeitige Verwendung von async void wird nicht unterstützt.
  • Einige Bibliotheken von Drittanbietern verwenden möglicherweise async void, aber Die Verwendung solcher Bibliotheken ist unbedingt zu vermeiden, da sie zu Komplikationen führen können.
  • Wenn Sie TAP über EAP verwenden müssen, ziehen Sie TAP-über-APM in Betracht oder das Umschließen der EAP-Komponente mit Task.Run.

Das obige ist der detaillierte Inhalt vonWarum verursacht Async Void „System.InvalidOperationException' in ASP.NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage