c#-4.0 asp.net-web-api dotnet-httpclient

c#-4.0 - restsharp



HttpClient vs HttpWebRequest (2)

Tengo un archivo grande que debo enviar a un cliente de API web ... Los datos son múltiples partes. El problema es que si el archivo se envía a través de una solicitud web http, entonces se carga rápidamente en el webapi. Para esta solicitud, el contenido del archivo se escribe directamente sobre la secuencia de solicitud.

Donde si el mismo archivo se envía a través de Httpclient (.net 4.5), la carga es lenta en comparación con la solicitud web http. Estoy usando multipartformdatacontent en Httpclient post async.

Entonces, para archivos grandes, ¿tenemos que usar solo solicitud web? o ¿hay alguna configuración en Httpclient que hace que la carga sea más rápida?


Estaba usando FileStreamContent con httpclient ... Pero cuando usé ByteArrayContent, funcionó bien.

No estoy seguro de cómo y por qué esto marcó la diferencia, pero enviar bytes a través de la transmisión es una mejor manera que enviar la transmisión


HttpClient es más como un navegador sin cabeza. Es una herramienta poderosa e ideal si va a crear muchas solicitudes HTTP. Por ejemplo, puede establecer encabezados predeterminados y esas cosas. Aquí están las 5 mejores maneras en que difiere de una HttpWebRequest que se toma de here

  1. Una instancia de HttpClient es el lugar para configurar extensiones, establecer encabezados predeterminados, cancelar solicitudes pendientes y más.
  2. Puede emitir tantas solicitudes como desee a través de una única instancia de HttpClient.
  3. HttpClients no están vinculados a un servidor HTTP particular o host; puede enviar cualquier solicitud HTTP utilizando la misma instancia de HttpClient.
  4. Puede derivar de HttpClient para crear clientes especializados para sitios o patrones particulares
  5. HttpClient usa el nuevo patrón orientado a tareas para manejar solicitudes asíncronas, lo que facilita enormemente la administración y coordinación de múltiples solicitudes pendientes.