从这个answer到问题:Do HttpClient and HttpClientHandler have to be disposed?,我发现最佳做法是不为每个HTTP请求配置System.Net.Http.HttpClient
。特别是,声明:
HttpClient的标准用法是不要在每次请求后处理它。
这很好。
我的问题是,这是"模式"也适用于Windows.Web.Http.HttpClient
?或者它应该按HTTP请求处理?我认为documentation对此有点模糊。在其中一个样本中,它只是说明:
// Once your app is done using the HttpClient object call dispose to
// free up system resources (the underlying socket and memory used for the object)
httpclient.Dispose();
我相信这可以通过两种方式阅读,因此对此的任何具体输入都表示赞赏。
答案 0 :(得分:4)
在我看来,如果它一次只能用于一个请求,如果你试图将它用于多个请求,它就会抛出异常。
此外,请考虑除最早的HTTP版本之外的所有版本都允许对给定TCP连接的多个请求。使用相同的HttpClient
对象允许框架为多个请求维护TCP连接。
虽然示例代码只执行一个请求,但请注意the documentation中的此文字:
HttpClient类实例充当会话以发送HTTP请求并接收响应。 HttpClient实例是一组设置,用于将应用于该实例执行的所有请求。此外,每个HttpClient实例都使用自己的连接池...
[强调我的]
要使对象充当"应用于该实例执行的所有请求的设置集合",很明显它必须用于多个请求。