Heim > Backend-Entwicklung > C++ > Wie kann ich die Response.Body-Eigenschaft in ASP.NET Core effizient lesen?

Wie kann ich die Response.Body-Eigenschaft in ASP.NET Core effizient lesen?

Mary-Kate Olsen
Freigeben: 2025-01-08 16:27:41
Original
484 Leute haben es durchsucht

How Can I Efficiently Read the Response.Body Property in ASP.NET Core?

Zugriff auf Response.Body in ASP.NET Core: Ein verfeinerter Ansatz

Direktes Lesen Response.Body in ASP.NET Core stellt aufgrund seiner reinen Schreibfunktion eine Herausforderung dar. Es gibt jedoch effiziente Methoden, um den Inhalt abzurufen.

Bekämpfung ineffizienter Methoden

Frühere Lösungen mit MemoryStream Ersetzungen sind zwar funktionsfähig, führen jedoch zu Leistungseinbußen. Die EnableRewind-Methode, die auf Request.Body anwendbar ist, ist für Response.Body unwirksam.

Einführung einer optimierten Middleware-Lösung

Die optimale Lösung nutzt benutzerdefinierte Middleware ResponseRewindMiddleware, um Response.Body das Lesen elegant zu handhaben. Diese Middleware fängt den Antwortstrom ab, leitet ihn vorübergehend an einen MemoryStream um, verarbeitet die Anfrage, liest den MemoryStream-Inhalt und stellt dann nahtlos den ursprünglichen Strom wieder her.

Erweiterte Middleware-Implementierung

Hier ist eine verbesserte Implementierung von ResponseRewindMiddleware:

<code class="language-csharp">public class ResponseRewindMiddleware
{
    private readonly RequestDelegate _next;

    public ResponseRewindMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        var originalBody = context.Response.Body;
        using (var memoryStream = new MemoryStream())
        {
            context.Response.Body = memoryStream;
            await _next(context);

            memoryStream.Seek(0, SeekOrigin.Begin);
            using (var reader = new StreamReader(memoryStream))
            {
                var responseBody = await reader.ReadToEndAsync();
                // Process responseBody here...
            }

            memoryStream.Seek(0, SeekOrigin.Begin);
            await memoryStream.CopyToAsync(originalBody);
        }
    }
}</code>
Nach dem Login kopieren

Diese Middleware erfasst den Antwortinhalt effizient, ohne die Leistung oder Datenintegrität zu beeinträchtigen. Der erfasste responseBody-String steht für die weitere Verarbeitung innerhalb der Middleware bereit. Dieser Ansatz gewährleistet einen sauberen und effizienten Zugriff auf den Inhalt des Antworttexts.

Das obige ist der detaillierte Inhalt vonWie kann ich die Response.Body-Eigenschaft in ASP.NET Core effizient lesen?. 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