HttpClient与HttpWebRequest

我有一个大文件,我必须发送到一个web api客户端…数据是多部分。 问题是,如果文件是通过http web请求发送的,那么它会在webapi上快速上传。 对于这个请求,文件内容直接写在请求stream上。

就像通过Httpclient(.net 4.5)发送相同的文件一样,与http web请求相比,上传速度很慢。 我在Httpclient post async中使用multipartformdatacontent。

那么,对于大文件,我们是否只能使用Web请求? 还是有任何设置上的Httpclient,使上传更快?

HttpClient更像是一个无头浏览器。 如果你要创build许多http请求,它是一个强大的和理想的工具。 例如,你可以设置默认的标题和东西。 这里有5个不同于HttpWebRequest方法

  1. HttpClient实例是configuration扩展,设置默认标题,取消未完成请求等的地方。
  2. 您可以通过单个HttpClient实例发出尽可能多的请求。
  3. HttpClient不绑定到特定的HTTP服务器或主机; 您可以使用相同的HttpClient实例提交任何HTTP请求。
  4. 您可以派生自HttpClient为特定的站点或模式创build专门的客户端
  5. HttpClient使用新的面向任务的模式来处理asynchronous请求,使pipe理和协调多个未完成的请求变得非常容易。

我用httpclient使用FileStreamContent …但是当我使用ByteArrayContent,它工作正常。

我不知道如何以及为什么这样做有所不同,但通过stream发送字节是一个更好的方法,而不是发送stream