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

C# 这是使用Ninject依赖项注入绑定HttpClient的正确方法吗?,c#,C#,这是使用Ninject依赖项注入绑定HttpClient的正确方法吗 Bind<HttpClient>().To<HttpClient>().InSingletonScope(); Bind().To().InSingletonScope(); 这会在任何地方重复使用同一个HttpClient,而不是“更新”一个新的吗 如果您询问将HttpClient注册为singleton是否正确,那么是的 Microsoft文档: HttpClient打算实例化一次并在整个过程中

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

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

这会在任何地方重复使用同一个HttpClient,而不是“更新”一个新的吗

如果您询问将
HttpClient
注册为singleton是否正确,那么是的

Microsoft文档:

HttpClient打算实例化一次并在整个过程中重复使用 应用程序的生命周期。实例化的HttpClient类 每一个请求都会耗尽重型设备下可用的插座数量 荷载。这将导致SocketException错误

在如何向Ninject注册为singleton的情况下,有两个基本相同的选项:

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

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

另外,如果您能够安装软件包(适用于.Net framework和.Net Core),最好使用
HttpClientFactory
。它将以最有效的方式管理您的HttpClient实例(在100%的情况下,将
HttpClient
保留在内存中并不是最有效的方式)。如何使用它您可以阅读

您可能想阅读是的,很好有没有办法将新的HttpClientFactory与Ninject一起使用?我只能找到NetCore的例子,而不能找到完整框架(net472)的例子。所以你们也可以在框架中使用它们来回答@Vinod问题,你们会使用
Bind().to().InSingletonScope()吗?@ChrisWalsh它能用吗?(Bind().To().InSingletonScope();)@zolty13否,因为我尚未绑定
IHttpClientFactory
,所以RHS保持未绑定状态。