循环中的 DelegatingHandler 和 HttpClient
DelegatingHandler and HttpClient in a loop
我正在尝试循环执行 HttpClient.GetAsync
。
根据 Microsoft Doc,建议使用 HttpClient
的 1 个实例。
我得到 HttpClient
的方式是
var httpClient = HttpClientFactory.Create(HttpClientRequestHandler.HttpMessageHandler, delegatingHandler);
第一次使用 GetAsync
功能正常,但是当我重新使用 httpClient
引用时,出现错误:The 'DelegatingHandler' list is invalid because the property 'InnerHandler' of 'HttpClientTelemetryHandler' is not null.
当我尝试每次在循环中创建一个新的 Handler
和 HttpClient
实例时,它工作正常。
现在这是利益冲突。我应该在循环中每次都创建一个新实例,还是有任何其他方法可以做到这一点,这是正确的方法。
附加信息:我用来创建 HttpClient
的自定义库是 .Net Standard 2.0
,调用 HttpClient 的客户端应用程序是 .Net Core 2.1
.
感谢任何帮助。
谢谢。
通常当您在批处理或循环中重复使用相同的 Handler
实例时会发生此错误。
在每个请求结束时正确处理 HttpClient 可防止此错误。
public class Test{
private static HttpClient _httpClient;
SomeFunction(){
using (var client = new HttpClient(
HttpClientFactory.CreatePipeline(
new HttpClientHandler
{
CookieContainer = new CookieContainer(),
UseCookies = true
},
new DelegatingHandler[] { new CustomHandler() })))
{
//do something with `client`
}
}
}
我正在尝试循环执行 HttpClient.GetAsync
。
根据 Microsoft Doc,建议使用 HttpClient
的 1 个实例。
我得到 HttpClient
的方式是
var httpClient = HttpClientFactory.Create(HttpClientRequestHandler.HttpMessageHandler, delegatingHandler);
第一次使用 GetAsync
功能正常,但是当我重新使用 httpClient
引用时,出现错误:The 'DelegatingHandler' list is invalid because the property 'InnerHandler' of 'HttpClientTelemetryHandler' is not null.
当我尝试每次在循环中创建一个新的 Handler
和 HttpClient
实例时,它工作正常。
现在这是利益冲突。我应该在循环中每次都创建一个新实例,还是有任何其他方法可以做到这一点,这是正确的方法。
附加信息:我用来创建 HttpClient
的自定义库是 .Net Standard 2.0
,调用 HttpClient 的客户端应用程序是 .Net Core 2.1
.
感谢任何帮助。
谢谢。
通常当您在批处理或循环中重复使用相同的 Handler
实例时会发生此错误。
在每个请求结束时正确处理 HttpClient 可防止此错误。
public class Test{
private static HttpClient _httpClient;
SomeFunction(){
using (var client = new HttpClient(
HttpClientFactory.CreatePipeline(
new HttpClientHandler
{
CookieContainer = new CookieContainer(),
UseCookies = true
},
new DelegatingHandler[] { new CustomHandler() })))
{
//do something with `client`
}
}
}