C# 这是使用Ninject依赖项注入绑定HttpClient的正确方法吗?
这是使用Ninject依赖项注入绑定HttpClient的正确方法吗C# 这是使用Ninject依赖项注入绑定HttpClient的正确方法吗?,c#,C#,这是使用Ninject依赖项注入绑定HttpClient的正确方法吗 Bind<HttpClient>().To<HttpClient>().InSingletonScope(); Bind().To().InSingletonScope(); 这会在任何地方重复使用同一个HttpClient,而不是“更新”一个新的吗 如果您询问将HttpClient注册为singleton是否正确,那么是的 Microsoft文档: 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保持未绑定状态。