这是使用Ninject依赖注入来绑定HttpClient的正确方法吗?

时间:2019-03-06 16:13:47

标签: c#

这是使用Ninject依赖注入来绑定HttpClient的正确方法吗?

Bind<HttpClient>().To<HttpClient>().InSingletonScope();

这是否会在各地重复使用相同的HttpClient而不是“更新”一个新的HttpClient? :)

1 个答案:

答案 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