在静态类中有效地重用'HttpClient'

时间:2012-06-23 12:52:35

标签: c# .net static .net-4.0 httpclient

我正在每个静态请求方法中重新创建HttpClient的实例,但read更优先(在大多数情况下)重用 {{1}实例。

在静态类中重用HttpClient个实例的首选/推荐方法是什么?

2 个答案:

答案 0 :(得分:1)

由于您的请求方法是静态的,HttpClient也必须是该类的static成员才能被重用(或者某些道德等同物)。

你也可以决定在这里添加更多抽象,例如而不是抓取static字段使用private static getter方法;这允许您集中决定是否应该重用HttpClient或者是否基于每个呼叫返回另一个实例。

答案 1 :(得分:0)

我的理解是,您可以初始化HTTP客户端并重用该实例,只要您公开调用它就会是线程安全的,请参阅此处的线程安全部分https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.dnsrefreshtimeout(v=vs.110).aspx 如果每次执行所有操作都是打开多个套接字时创建一个新的HTTPClient调用。 这篇文章(及相关评论)非常简洁地解决了这个话题。 https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/