这是使用Ninject依赖注入来绑定HttpClient的正确方法吗?
Bind<HttpClient>().To<HttpClient>().InSingletonScope();
这是否会在各地重复使用相同的HttpClient而不是“更新”一个新的HttpClient? :)
答案 0 :(得分:2)
如果您要询问将HttpClient
注册为单身人士是否正确,那么是的。
Microsoft文档:
HttpClient旨在实例化一次并在整个过程中重复使用 应用程序的生命周期。为实例化HttpClient类 每个请求都会耗尽大量的可用插槽 负载。这将导致SocketException错误。
如果要使用Ninject将其注册为单例,则有两个基本相同的选项:
Bind<HttpClient>().To<HttpClient>().InSingletonScope();
Bind<HttpClient>().ToSelf().InSingletonScope();
PS。如果您能够安装this软件包(适用于.Net框架和.Net Core),则最好使用HttpClientFactory
。它将以最有效的方式管理HttpClient实例(将HttpClient
保留在内存中并不是100%情况下最有效的方式)。如何使用它,您可以阅读here