У меня есть консольное приложение, которое использует HttpClient для выполнения веб-запросов.
var client = new HttpClient();
Я пытаюсь добавить несколько HttpMessageHandler к нему (на самом деле пользовательские реализации DelegatingHandler), но конструктор для HttpClient принимает только один HttpMessageHandler.
class LoggingHandler : DelegatingHandler { //... }
class ResponseContentProcessingHandler : DelegatingHandler { //... }
это нормально...
var client = new HttpClient(new LoggingHandler()); // OK
но это не компилируется:
var client = new HttpClient(
new LoggingHandler(),
new ResponseContentProcessingHandler()); // Sadness
Поскольку я нацеливаюсь на .NET 4.0, я не могу использовать HttpClientFactory, как обычно объясняется решение этой проблемы:
HttpClient client = HttpClientFactory.Create(
new LoggingHandler(),
new ResponseContentProcessingHandler());
Поскольку я просто в консольном приложении, а не в приложении ASP.NET, я тоже не могу сделать это:
GlobalConfiguration.Configuration
.MessageHandlers
.Add(new LoggingHandler()
.Add(new ResponseContentProcessingHandler());
Я посмотрел на исходник для HttpClientFactory, и там, похоже, нет ничего такого, что не скомпилировалось бы в .NET 4.0, но если не считать развертывания моей собственной фабрики ("вдохновленной" Исходный код Microsoft), есть ли способ вручную добавить множество обработчиков HTTP-сообщений в HttpClient?