У меня есть вариант использования HttpMessageHandler
, который требует новых параметров при создании экземпляра. Я считаю, что IHttpMessageHandlerFactory.CreateHandler
является правильным API здесь, но я не уверен, правильно ли это использование:
public class MyDelegatingHandler : DelegatingHandler {
public MyDelegatingHandler(
HttpMessageHandler internalHandler
)
{
_internalHandler = internalHandler;
}
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken
)
{
// custom logic
return await _internalHandler.SendAsync(request, cancellationToken).ConfigureAwait(false);
}
private HttpMessageHandler _internalHandler;
}
public class MyHttpClientFactory {
public MyHttpClientFactory(
IHttpMessageHandlerFactory factory
)
{
_factory = factory;
}
public HttpClient CreateClient(
// arguments
)
{
return new HttpClient(
new MyDelegatingHandler(_factory.CreateHandler()),
disposeHandler: false
);
}
private IHttpMessageHandlerFactory _factory;
}
Предполагая, что MyDelegatingHandler
не имеет состояния, которое нужно удалять само по себе, будет ли это правильно использовать функции управления временем жизни HttpClientFactory
, внедренные через зависимость IHttpMessageHandlerFactory
?