use*_*247 42 c#-4.0 asp.net-web-api dotnet-httpclient
我有一个大文件,我必须发送到web api客户端...数据是多部分.问题是,如果文件是通过http Web请求发送的,那么它会在webapi上快速上传.对于此请求,文件内容将直接写入请求流.
就好像通过Httpclient(.net 4.5)发送相同的文件一样,与http web请求相比,上传速度很慢.我在Httpclient post async中使用multipartformdatacontent.
那么,对于大文件,我们是否只能使用Web请求?或者Httpclient上是否有任何设置可以加快上传速度?
Kri*_*son 44
HttpClient
更像是一个无头浏览器.如果您要创建许多http请求,它是一个功能强大且理想的工具.例如,您可以设置默认标题和内容.以下是前5种方法从它不同于HttpWebRequest
这是取自这里
我将 FileStreamContent 与 httpclient 一起使用...但是当我使用 ByteArrayContent 时,它运行良好。
我不确定这如何以及为什么会产生不同,但是通过流发送字节是比发送流更好的方法
也许您正在一个using
可以解释性能问题的块中实例化 HttpClient 。例如
using (var httpClient = new HttpClient() )
{
var result = await httpClient.GetAsync("http://example.com");
Console.WriteLine(result.StatusCode);
}
Run Code Online (Sandbox Code Playgroud)
这里 HttpClient 的实例在请求后立即被处理,而它应该可以说是一个长期存在的对象(例如应用程序的生命周期)。
[编辑 - 添加上下文]
处理实例也会关闭连接,但让套接字在设定的持续时间内处于等待状态。对于此代码的每次执行,操作系统将尝试创建一个新的套接字连接,并且由于完成此操作的速度存在限制,因此可能会出现性能/可靠性问题。
重用相同的 HttpClient 实例意味着更好地重用打开的套接字和更有效地使用系统资源。
更多信息在这里。
归档时间: |
|
查看次数: |
43101 次 |
最近记录: |