Un archivo binario debe llegar al cliente HTTP como bytes. Leerlo con un lector de texto y volver a codificar la cadena resultante como ASCII puede sustituir valores antes de que el proxy reciba nada. Que una muestra de texto pequeña funcione no hace que esa ruta sea segura para una imagen, un archivo comprimido o un documento.

En una ruta de carga .NET existente, sustituye esa conversión por un origen de cuerpo binario:

using var file = File.OpenRead(path);
using var content = new StreamContent(file);

Pasa el contenido por la carga HTTP configurada de la aplicación; el fragmento establece el origen del cuerpo, mientras que el cliente existente sigue encargándose del método, el destino, el proxy y la gestión del ciclo de vida.

Elimina cualquier Content-Length calculado a partir del recuento de caracteres de la cadena antigua. El campo mide octetos. Deja que la biblioteca HTTP construya el encuadre a partir de la representación del cuerpo en lugar de emparejar un recuento de caracteres con un búfer codificado de forma distinta.

Para una carga de texto intencionada, elige la codificación explícitamente y deriva cualquier longitud necesaria de los bytes enviados. Esa decisión de formato de texto no debería aplicarse a archivos arbitrarios.

Compara el artefacto transferido con un valor esperado de confianza. El éxito de HTTP confirma que una operación de carga se completó en esa capa; no puede demostrar que una conversión de texto previa haya conservado los bytes originales.

Artículos relacionados