I have a large file which I have to send to a web api client...The data is multi part. The issue is , if the file is sent over http web request, then it is uploaded quickly on the webapi. For this request, file contents are written over the request stream directly.
Where as if the same file is sent over Httpclient (.net 4.5), the upload is slow when compared to http web request. I am using multipartformdatacontent in Httpclient post async.
So, for large files, do we have to use only web request? or is there any settings on Httpclient that makes the upload faster?
HttpClient
is more like a head-less browser. It a powerfull and ideal tool if you are going to be creating many http request. For example you can set default headers and stuff. Here are the top 5 ways it differs from anHttpWebRequest
which is taken from herePerhaps you were instantiating HttpClient in a
using
block which could explain performance issues. E.g.Here the instance of HttpClient is being disposed immediately after the request whereas it should be a long lived object (E.g. the lifetime of the application).
More info here.
I was using FileStreamContent with httpclient...But when I used ByteArrayContent, it worked fine.
I am not sure how and why this made the difference, but sending bytes over the stream is a better way rather than sending the stream