.net core HttpClient,似乎很难正确使用它
还有一个问题是关于.net core HttpClient,似乎很难正确使用它,.net-core,httpclient,.net Core,Httpclient,还有一个问题是关于HttpClient的正确用法,因为除非我遗漏了什么,否则我会在Microsoft文档中找到关于HttpClient的矛盾信息。这两个环节是我困惑的根源: 第一个声明最佳方法是共享单例HttpClient实例,第二个声明AddHttpClient()将服务注册为瞬态,更具体地说(从该URL复制): 类型化客户端在DI中注册为瞬态。在前面 代码,AddHttpClient将GitHubService注册为临时服务。 此注册使用工厂方法来: 创建HttpClient的实例 创建
HttpClient
的正确用法,因为除非我遗漏了什么,否则我会在Microsoft文档中找到关于HttpClient
的矛盾信息。这两个环节是我困惑的根源:
第一个声明最佳方法是共享单例HttpClient
实例,第二个声明AddHttpClient()
将服务注册为瞬态,更具体地说(从该URL复制):
类型化客户端在DI中注册为瞬态。在前面
代码,AddHttpClient
将GitHubService
注册为临时服务。
此注册使用工厂方法来:
HttpClient
的实例李>
GitHubService
的实例,将HttpClient
的实例传递给其构造函数AddHttpClient()
,感觉很安全,但现在我又困惑了。。。更糟糕的是,我在@rynowak中发现了这样一个说法:
如果你正在建立一个图书馆,你计划分发,我会
强烈建议你不要依赖别人
IHttpClientFactory
,并让您的消费者通过
HttpClient
实例
为什么这对我很重要?因为,我正在创建一个图书馆,主要做两件事:
IdentityServer4
)//来自https://github.com/georgekosmidis/IdentityServer4.Contrib.HttpClientService/blob/master/src/IdentityServer4.Contrib.HttpClientService/Extensions/ServiceCollectionExtensions.cs
services.AddHttpClient()
.SetHandlerLifetime(TimeSpan.FromMinutes(5));
任何关于基于HttpClient
的具体实现的建议或示例都是非常受欢迎的
谢谢大家! 类型化的客户端被注入为瞬态,但其内部的
HttpClient
可能不是。感谢David的回答,但文档中声明:“此注册使用工厂方法:1.创建HttpClient的实例。2…”。你的意思是这没有很好的文档记录,实际上只创建了一个实例,然后重新使用?请查看此线程以获取详细答案: