.NET Core中每次请求新建HttpClient实例时是否该释放?
每次新建HttpClient实例时的正确用法
在.NET Core应用里,如果每次请求都新建HttpClient实例(不遵循复用模式),必须用using关键字释放实例,具体说明如下:
- 必须释放的原因:每个新建的HttpClient实例默认会绑定独立的HttpMessageHandler,这个Handler关联着套接字等底层资源。如果不释放,这些资源无法被及时回收,会堆积大量未释放的实例和资源,反而会加重套接字耗尽的问题。
- 正确写法:
兼容所有C#版本的传统using语句:
C# 8及以上版本可使用更简洁的using声明:using (var httpClient = new HttpClient()) { var response = await httpClient.GetAsync("https://目标请求地址"); // 编写响应处理逻辑 }using var httpClient = new HttpClient(); var response = await httpClient.GetAsync("https://目标请求地址"); // 编写响应处理逻辑
只要当前HttpClient实例不会被后续代码复用,就必须通过using(或手动调用Dispose())确保资源及时释放,避免资源堆积问题。
内容的提问来源于stack exchange,提问作者subject-q
相关产品推荐
相关产品推荐

