
Shtimi i regjistrimit të trupit të kërkesave në një API shkaktoi refuzimin e porosive të vlefshme në një endpoint POST. Të dhënat shfaqeshin saktë në regjistra, por komponenti që përpunonte kërkesën e gjente trupin bosh dhe kthente gabime validimi.
Shkaku ishte leximi i rrjedhës së të dhënave nga middleware-i i regjistrimit. Trupi i kërkesës është një rrjedhë që, në gjendjen fillestare, lexohet vetëm përpara: pasi konsumohet deri në fund, lexuesit pasues nuk marrin më të dhëna. Kjo mund të pengojë edhe lidhjen automatike të të dhënave me modelin, duke prodhuar një model null ose gabime për fusha të detyrueshme që mungojnë.
Autori e riprodhoi problemin me .NET 10, në konfigurimin Release, brenda një kontejneri të vogël Linux. Një klient dërgoi përmes loopback një kërkesë POST me trup JSON prej 61 bajtesh. Middleware-i lexoi të gjithë 61 bajtet, ndërsa përpunuesi i endpoint-it /orders lexoi 0. Serveri megjithatë u përgjigj me statusin 200.
Zgjidhja ishte thirrja e HttpRequest.EnableBuffering() përpara leximit të parë dhe rivendosja e context.Request.Body.Position = 0 pas tij. Kjo mundëson rileximin e trupit nga komponentët pasues. Në provën e përsëritur, si middleware-i ashtu edhe përpunuesi lexuan nga 61 bajte. Aktivizimi i buffering nuk mjafton pa rikthimin e pozicionit në fillim.
Burimi: DEV Community (Web Dev Feed) — lexoni artikullin e plotë në anglisht.

