Maison >développement back-end >C++ >Comment puis-je lire efficacement la propriété Response.Body dans ASP.NET Core ?
Accès à Response.Body dans ASP.NET Core : une approche raffinée
La lecture directe Response.Body
dans ASP.NET Core présente des défis en raison de sa nature en écriture seule. Cependant, des méthodes efficaces existent pour récupérer son contenu.
S'attaquer aux méthodes inefficaces
Les solutions précédentes impliquant des MemoryStream
remplacements, bien que fonctionnelles, introduisent une surcharge de performances. La méthode EnableRewind
, applicable à Request.Body
, est inefficace pour Response.Body
.
Présentation d'une solution middleware rationalisée
La solution optimale utilise un middleware personnalisé, ResponseRewindMiddleware
, pour gérer avec élégance Response.Body
la lecture. Ce middleware intercepte le flux de réponse, le redirige temporairement vers un MemoryStream
, traite la demande, lit le contenu MemoryStream
, puis restaure de manière transparente le flux d'origine.
Mise en œuvre améliorée du middleware
Voici une implémentation améliorée du 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>
Ce middleware capture efficacement le contenu de la réponse sans compromettre les performances ou l'intégrité des données. La chaîne responseBody
capturée est facilement disponible pour un traitement ultérieur dans le middleware. Cette approche garantit un moyen propre et efficace d'accéder au contenu du corps de la réponse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!