我正在考虑将HttpClient实现为avoid socket exhaustion的静态 . (如果每次调用使用一个实例,最终会在TIME_WAIT中停留4分钟的套接字,如果执行了足够的调用或者并行运行了足够多的应用程序实例,则套接字将耗尽) . 我也知道这种方法导致的DNS caching problem并将添加合适的 ConnectionLeaseTimeout .

但我的问题与剩下的一个静态HttpClient有关 .

first link显示以下示例代码:

private static HttpClient Client = new HttpClient();

但是,如果不再需要(即,在应用程序关闭期间),它应该是IDisposable吗?虽然对于纯HttpClient可能没有必要,但如果有一个处理程序使用非托管资源呢?我怎么称呼这个呢?或者更具体地说,是否有可以订阅的事件以确保发生这种情况?

Edit:

这个问题在两个重要方面与建议的副本不同 .

  • 在每次调用的httpclient实例的上下文中询问该票证 . 表明标准使用不是在每次请求之后处理,这显然不是我的问题所暗示的 .

  • 这句话

只要应用程序需要发出HTTP请求,HttpClient对象就会存在

意味着在你的应用程序不再需要发出HTTP请求之后就应该进行处理 . 其他问题和资源表明,如果处理程序具有非托管资源,则需要IDisposable .

事实上,我在审核了这个以及其他一些SO问题之后就提出了这个问题,以确保没有答案 . 如果我的问题是重复的,太棒了,我找不到它,重要的是suggested duplicate没有解决这个问题 .