基于 keyed DI 的 HttpClient
💡
原文中文,约9100字,阅读约需22分钟。
📝
内容提要
.NET 8 引入了基于名称的 HttpClient 依赖注入,支持通过 AddAsKeyed() 方法注册并按名称获取服务,简化了使用方式。示例展示了不同生命周期的 HttpClient 注册及 ConfigureHttpClientDefaults 方法的使用。
🎯
关键要点
- .NET 8 引入了基于名称的 HttpClient 依赖注入,支持通过 AddAsKeyed() 方法注册并按名称获取服务。
- 使用示例展示了如何注册不同生命周期的 HttpClient,并使用 ConfigureHttpClientDefaults 方法简化注册过程。
- 默认注册的 HttpClient 服务生命周期为 Scoped,可以通过 AddAsKeyed 方法调整生命周期。
- 可以使用 ConfigureHttpClientDefaults 方法将所有 HttpClient 注册为命名 HttpClient,避免重复代码。
- 使用 RemoveAsKeyed() 方法可以移除 HttpClient 的 keyed service 注册。
- HttpClientKeyedLifetime 类用于在服务中注册或移除 keyed service,支持根据名称获取服务。
❓
延伸问答
.NET 8 中如何注册基于名称的 HttpClient?
可以使用 AddHttpClient 方法后接 AddAsKeyed() 方法来注册基于名称的 HttpClient。
如何通过名称获取注册的 HttpClient?
可以使用 provider.GetRequiredKeyedService<HttpClient>("名称") 方法来获取注册的 HttpClient。
HttpClient 的默认生命周期是什么?
默认情况下,HttpClient 的服务生命周期为 Scoped。
如何调整 HttpClient 的生命周期?
可以在 AddAsKeyed 方法中指定 ServiceLifetime 参数来调整 HttpClient 的生命周期。
如何使用 ConfigureHttpClientDefaults 方法?
可以使用 ConfigureHttpClientDefaults 方法将所有 HttpClient 注册为命名 HttpClient,简化注册过程。
如何移除已注册的 HttpClient?
可以使用 RemoveAsKeyed() 方法来移除 HttpClient 的 keyed service 注册。
➡️