Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membaca Response.Body Property dengan Cekap dalam Teras ASP.NET?

Bagaimanakah Saya Boleh Membaca Response.Body Property dengan Cekap dalam Teras ASP.NET?

Mary-Kate Olsen
Lepaskan: 2025-01-08 16:27:41
asal
484 orang telah melayarinya

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

Mengakses Respons.Body dalam Teras ASP.NET: Pendekatan Yang Diperhalusi

Membaca terus Response.Body dalam ASP.NET Core memberikan cabaran kerana sifat tulis sahaja. Walau bagaimanapun, kaedah yang cekap wujud untuk mendapatkan semula kandungannya.

Mengatasi Kaedah Tidak Cekap

Penyelesaian terdahulu yang melibatkan penggantian MemoryStream, sementara berfungsi, memperkenalkan overhed prestasi. Kaedah EnableRewind, terpakai untuk Request.Body, tidak berkesan untuk Response.Body.

Memperkenalkan Penyelesaian Perisian Tengah Diperkemas

Penyelesaian optimum menggunakan perisian tengah tersuai, ResponseRewindMiddleware, untuk mengendalikan bacaan Response.Body dengan elegan. Perisian tengah ini memintas strim respons, mengubah halanya buat sementara ke MemoryStream, memproses permintaan, membaca kandungan MemoryStream dan kemudian memulihkan strim asal dengan lancar.

Pelaksanaan Middleware Dipertingkat

Berikut ialah pelaksanaan yang dipertingkatkan 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>
Salin selepas log masuk

Perisian tengah ini menangkap kandungan tindak balas dengan cekap tanpa menjejaskan prestasi atau integriti data. Rentetan responseBody yang ditangkap sedia tersedia untuk pemprosesan selanjutnya dalam perisian tengah. Pendekatan ini memastikan cara yang bersih dan cekap untuk mengakses kandungan badan tindak balas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Response.Body Property dengan Cekap dalam Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan