ASP.NET Core Response.End ()?

8

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%     
Michael W Riemer Jr 23.10.2016, 18:52
quelle

2 Antworten

8

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%     
gretro 23.10.2016 18:58
quelle
2

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: Ссылка

    
akazemis 08.12.2016 04:28
quelle

Tags und Links