Bevara byte i binära filer när du laddar upp via en proxy
Bevara filens byte och bytelängder när du laddar upp via en proxy i stället för att avkoda artefakten som text och bygga upp den igen med ASCII.
En binär fil bör nå HTTP-klienten som byte. Att läsa den med en textläsare och koda om den resulterande strängen som ASCII kan ersätta värden innan proxyn tar emot något. Att ett litet textprov fungerar gör inte den vägen säker för en bild, ett arkiv eller ett dokument.
I en befintlig .NET-uppladdningsväg ersätter du den konverteringen med en binär kroppskälla:
using var file = File.OpenRead(path);
using var content = new StreamContent(file);
Skicka innehållet genom programmets konfigurerade HTTP-uppladdning; fragmentet etablerar kroppskällan, medan den befintliga klienten fortfarande äger metoden, destinationen, proxyn och livstidshanteringen.
Ta bort alla Content-Length som beräknats från den gamla strängens teckenantal. Fältet mäter oktetter. Låt HTTP-biblioteket bygga ramningen från kroppsrepresentationen i stället för att para ihop ett teckenantal med en buffert som kodats annorlunda.
Vid en avsiktlig textuppladdning väljer du kodningen explicit och härleder eventuell nödvändig längd från de byte som skickas. Det beslutet om textformat bör inte tillämpas på godtyckliga filer.
Jämför artefakten som överfördes med ett pålitligt förväntat värde. HTTP-framgång bekräftar att en uppladdning slutfördes på det lagret; det kan inte visa att en tidigare textkonvertering bevarade de ursprungliga byten.