是否必须按HTTP请求处理Windows.Web.Http.HttpClient?

时间:2015-07-08 14:18:45

标签: c# .net windows-store-apps dotnet-httpclient

从这个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();

我相信这可以通过两种方式阅读,因此对此的任何具体输入都表示赞赏。

1 个答案:

答案 0 :(得分:4)

在我看来,如果它一次只能用于一个请求,如果你试图将它用于多个请求,它就会抛出异常。

此外,请考虑除最早的HTTP版本之外的所有版本都允许对给定TCP连接的多个请求。使用相同的HttpClient对象允许框架为多个请求维护TCP连接。

虽然示例代码只执行一个请求,但请注意the documentation中的此文字:

  

HttpClient类实例充当会话以发送HTTP请求并接收响应。 HttpClient实例是一组设置,用于将应用于该实例执行的所有请求。此外,每个HttpClient实例都使用自己的连接池...

[强调我的]

要使对象充当"应用于该实例执行的所有请求的设置集合",很明显它必须用于多个请求。