Ich versuche, den benutzerdefinierten Web-Handler von Webforms-Projekt nach MVC zu migrieren. Es funktionierte gut dort und rief asynchrone ProcessRequest.Async-Web-Handler funktioniert nicht in MVC
public class MyHandler : IHttpHandler
{
...
public async void ProcessRequest(HttpContext context)
{
...
Allerdings, wenn ich es in meinem MVC-Projekt (/Content/MyHandler.ashx) laufen, bekomme ich folgende Fehlermeldung:
Eine asynchrone Operation kann zu diesem Zeitpunkt nicht gestartet werden. Asynchrone Operationen können nur innerhalb eines asynchronen Handlers oder Moduls oder während bestimmter Ereignisse im Seitenlebenszyklus gestartet werden. Wenn diese Ausnahme beim Ausführen einer Seite aufgetreten ist, stellen Sie sicher, dass die Seite als <% @ Page Async = "true"%> markiert ist. Diese Ausnahme kann auch auf einen Versuch hinweisen, eine "async void" -Methode aufzurufen, die in der ASP.NET-Anforderungsverarbeitung im Allgemeinen nicht unterstützt wird. Stattdessen sollte die asynchrone Methode eine Aufgabe zurückgeben, und der Aufrufer sollte darauf warten.
Ich habe versucht, zu machen Process synchron (I „async“ in Methodendefinition entfernt und verändert die alle Asynchron-Anrufe von await Method()
zu Method().Result
, aber es half nicht, die Server lädt nur die Seite für immer. Ich habe auch versucht zu ersetzen . IHttpHandler
mit IHttpAsyncHandler
, aber es hat nicht funktioniert ich habe auch versucht Handler-Datei im Stamm und im benutzerdefinierten Ordner zu verschieben, ist das Ergebnis die gleichen Bitte helfen
Haben Sie darüber nachgedacht, nur einen Controller zu verwenden? Scheint einfacher für mich .. –
Nein, weil es für mich einfacher zu sein schien, wollte ich die Lösung verwenden, die ich bereits habe (wohlgemerkt, es ist ein relativ großer Handler) – Dalibor