JetBrains Rider 2026.1 Help

代码检查:短生命周期的 'HttpClient'

此检查会识别在短生命周期作用域(如方法内部或 using 块中)实例化 HttpClient 的情况。

虽然 HttpClient 实现了 IDisposable ,但它被设计为只实例化一次,并在整个应用程序生命周期内重用。 为每个请求创建新实例可能导致 套接字耗尽。 这是因为即使在 HttpClient 被释放后,底层套接字也不会立即被操作系统释放(它们会一直处于 TIME_WAIT 状态)。

public class Connection { static async Task<string> GetDataAsync0(string url) { var client = new HttpClient(); var response = await client.GetAsync(url); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } }
public class Connection { private static readonly HttpClient Client = new(); static async Task<string> GetDataAsync0(string url) { var response = await Client.GetAsync(url); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } }

此检查的快速修复会将 HttpClient 实例提升为 private static readonly 字段,确保在多次调用中复用。

2026年 3月 25日