Accès et rembobinage d'ASP.NET Core Response.Body
Accéder directement à Response.Body
d'ASP.NET Core présente un défi en raison de sa nature en écriture seule. Cet article explore des méthodes efficaces pour lire et rembobiner le contenu de la réponse, en abordant les limites des approches naïves.
Méthodes inefficaces :
Une solution courante, mais inefficace, consiste à remplacer Response.Body
par un MemoryStream
, à lire le contenu, puis à restaurer le flux d'origine. Cette méthode introduit des problèmes inutiles de surcharge et de performances.
La limitation du rembobinage :
Contrairement à Request.Body
, Response.Body
ne prend pas automatiquement en charge le rembobinage. Si vous tentez de le lire plusieurs fois, vous obtiendrez un flux vide lors des lectures suivantes.
La solution de flux tamponné :
La solution optimale exploite les flux mis en mémoire tampon. Un middleware, tel que ResponseBodyRewindMiddleware
, intercepte le flux de réponse. Il crée un MemoryStream
, y copie le contenu de la réponse, puis restaure le Response.Body
original. Cette copie mise en mémoire tampon permet plusieurs lectures sans affecter le flux d'origine et garantit que la position du flux est correctement réinitialisée.
Cette approche offre une amélioration significative des performances par rapport à la manipulation directe de l'original Response.Body
, offrant un moyen propre et efficace d'accéder et de réutiliser les données de réponse. L'utilisation de flux mis en mémoire tampon est cruciale pour gérer les scénarios nécessitant plusieurs lectures 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!