ASP.NET Kern-Reaktion.Ende()?
Ich versuche zu schreiben, ein Stück middleware zu halten, die bestimmte client-Routen wird auf dem server verarbeitet. Ich schaute auf eine Menge von custom-middleware-Klassen würde zu einem Kurzschluss der Reaktion mit
context.Response.End();
Sehe ich nicht die End () - Methode in der intellisense. Wie kann ich kündigen, die Antwort und stoppen der Ausführung der http-pipeline? Vielen Dank im Voraus!
public class IgnoreClientRoutes
{
private readonly RequestDelegate _next;
private List<string> _baseRoutes;
//base routes correcpond to Index actions of MVC controllers
public IgnoreClientRoutes(RequestDelegate next, List<string> baseRoutes)
{
_next = next;
_baseRoutes = baseRoutes;
}//ctor
public async Task Invoke(HttpContext context)
{
await Task.Run(() => {
var path = context.Request.Path;
foreach (var route in _baseRoutes)
{
Regex pattern = new Regex($"({route}).");
if(pattern.IsMatch(path))
{
//END RESPONSE HERE
}
}
});
await _next(context);
}//Invoke()
}//class IgnoreClientRoutes
- Nur rufen Sie nicht
next()
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ende nicht mehr existiert, weil die klassischen ASP.NET pipeline existiert nicht mehr. Die middlewares SIND in der pipeline. Wenn du aufhören willst zu der Verarbeitung der Anfrage zu diesem Punkt zurückkehren, ohne die nächste middleware. Dies wird effektiv stop der pipeline.
Gut, nicht ganz, da der Stapel wird abgewickelt und manche middlewares könnte noch einige schreiben von Daten auf die Antwort, aber Sie bekommen die Idee. Aus dem code, die Sie scheinen zu wollen, um zu vermeiden, weitere middlewares entlang der pipeline ausführen.
EDIT: Hier ist, wie es in den code.
End-Methode ist nicht mehr da. In der middleware, wenn man sich auf die weiter delegieren in der pipeline, es würde gehen, auf die nächste middleware, die Anforderung zu verarbeiten und gehen, sonst hätte es Ende der Anfrage. Der folgende code zeigt ein Beispiel für middleware, die fordert, den nächsten.Invoke-Methode, wenn Sie weglassen, dass wie die Reaktion beendet.
Immer wieder zu Ihr code sollte man einfach return aus der Methode, bei der Muster übereinstimmen.
Werfen Sie einen Blick in dieses doc aus Microsoft core docs für mehr details: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware