У меня есть класс, который обертывает DI'ed HttpClient и имеет некоторую стандартную функцию, использующую Polly. Я бы унаследовал классы от этого класса HttpClientEx и использовал бы его общие функции в другом моем коде.
Недавно появилось требование, чтобы наши сообщения к / от httpclient регистрировались. Я добавил HttpMessageHandler, который реализовал некоторые общие функции ведения журнала, но теперь у меня проблема:
Когда я вызываю любой из своих Gets / Posts и т. Д. С помощью Polly:
await polPolly.ExecuteAsync(async(ctCancelToken)=>
{
return await HttpClient.GetAsync(sUrl, ctCancelToken);
}, CancellationToken.None);
Это вызывает исключение: невозможно получить доступ к удаленному объекту. Имя объекта: 'System.Net.Http.HttpConnection + HttpConnectionResponseContent'
Я читал в Интернете, что это могло быть потому, что я не делаю свой обработчик сообщений «повторно используемым», и что Полли вызывает его удаление, вызывая эту проблему. Все примеры, которые я вижу для HttpMessageHandlers, которые обращаются к этому, показывают новый HttpClient (SomeMessageHandler, false) как «исправление» ... НО: Это не исправление. Вы даже не должны использовать HttpClient таким образом. Предполагается, что он будет УМЕРТЬ ...
Возникает вопрос: как указать, что мой обработчик можно использовать повторно, чтобы он соответствовал правильному способу использования HttpClient
? Я открыт для использования IHttpClientFactory
или Typed HttpClients...
. Подойдет любой вариант. Кажется, я не могу найти способ настроить это свойство.
Спасибо!
Джеймс