Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membaca Set-Sahaja Response.Body Property dalam Teras ASP.NET?
Membaca secara langsung harta Response.Body
dalam ASP.NET Core bermasalah kerana ia ditetapkan sebagai set-sahaja. Ini memberikan cabaran apabila perlu mengakses kandungan respons selepas ia ditulis.
Penyelesaian semasa selalunya melibatkan penggantian Response.Body
dengan MemoryStream
, membaca kandungan ke dalam rentetan, dan kemudian memulihkan strim asal. Kaedah ini, walaupun berfungsi, adalah kurang optimum kerana kerumitan dan potensi overhed prestasinya.
Penyelesaian yang lebih cekap memanfaatkan perisian tengah tersuai untuk mencipta strim buffer yang menyokong pencarian. Ini mengelakkan pertukaran aliran yang tidak perlu bagi pendekatan sebelumnya. Walaupun ASP.NET Core sememangnya tidak menyokong membaca aliran respons selepas menulis, perisian tengah tersuai menyediakan penyelesaian yang bersih.
Perisian tengah berikut memudahkan proses:
<code class="language-csharp">public class ResponseCaptureMiddleware { private readonly RequestDelegate _next; public ResponseCaptureMiddleware(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); string responseBody = new StreamReader(memoryStream).ReadToEnd(); //Process responseBody here... memoryStream.Seek(0, SeekOrigin.Begin); await memoryStream.CopyToAsync(originalBody); } } }</code>
Perisian tengah ini menggantikan sementara Response.Body
dengan MemoryStream
, menangkap kandungan respons, dan kemudian mengubah hala kandungan ke strim asal. Yang penting, kandungan respons (responseBody
) tersedia untuk diproses dalam perisian tengah.
Walaupun Response.Body
ditetapkan sahaja, mengakses kandungannya boleh dicapai menggunakan pendekatan perisian tengah tersuai. Kaedah ini menyediakan cara yang diperkemas dan lebih cekap untuk mengendalikan manipulasi aliran respons dalam aplikasi Teras ASP.NET.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Set-Sahaja Response.Body Property dalam Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!