Ich versuche, eine Middleware zu schreiben, damit bestimmte Client-Routen nicht auf dem Server verarbeitet werden. Ich habe mir viele benutzerdefinierte Middleware-Klassen angeschaut, die die Antwort mit
kurzschließen würden %Vor%Ich sehe die End () Methode in Intellisense nicht. Wie kann ich die Antwort beenden und die Ausführung der HTTP-Pipeline stoppen? Vielen Dank im Voraus!
%Vor%End existiert nicht mehr, weil die klassische ASP.NET-Pipeline nicht mehr existiert. Die Middlewares sind die Pipeline. Wenn Sie die Anfrage zu diesem Zeitpunkt nicht mehr bearbeiten möchten, kehren Sie zurück, ohne die nächste Middleware aufzurufen. Dies wird die Pipeline effektiv stoppen.
Nun, nicht ganz, denn der Stack wird abgewickelt und einige Middlewares könnten noch einige Daten in die Response schreiben, aber Sie bekommen die Idee. Aus Ihrem Code scheinen Sie zu vermeiden, dass weitere Middlewares in der Pipeline ausgeführt werden.
EDIT: Hier ist, wie es im Code zu tun ist.
%Vor%End-Methode ist nicht mehr da. Wenn Sie in Ihrer Middleware den next delegate in der Pipeline aufrufen, würde er zur nächsten Middleware gehen, um die Anfrage zu bearbeiten und fortzufahren, andernfalls würde sie die Anfrage beenden. Der folgende Code zeigt eine Beispiel-Middleware, die die next.Invoke-Methode aufruft. Wenn Sie das nicht tun, wird die Antwort beendet.
%Vor%Um zu Ihrem Code zurückzukehren, sollten Sie einfach von der Methode zurückkehren, falls das Muster übereinstimmt.
Weitere Informationen finden Sie in diesem Dokument in den Microsoft-Kerndokumenten: Ссылка
Tags und Links c# middleware asp.net-core-1.0