Как получить доступ к ProgressMessageHandler при создании HttpClient с помощью IHttpClientFactory в приложении WPF?C#

Место общения программистов C#
Ответить
Anonymous
 Как получить доступ к ProgressMessageHandler при создании HttpClient с помощью IHttpClientFactory в приложении WPF?

Сообщение Anonymous »


Здесь у меня есть HttpClient, который сообщает о прогрессе:

var handler = new HttpClientHandler() {AllowAutoRedirect = true}; вар ph = новый ProgressMessageHandler (обработчик); ph.HttpReceiveProgress += (_, args) => { // Делаем то, что мне тоже хотелось бы сделать с помощью подхода DI. }; вар клиент = новый HttpClient (ph); client.BaseAddress = новый Uri("https://localhost:7145/"); HttpRequestMessage requestMessage = новый (HttpMethod.Get, «DownloadFile»); requestMessage.Headers.Authorization = новое AuthenticationHeaderValue («Носитель», _tokenConfig.AccessToken); вар ответ = ждут client.SendAsync(requestMessage); Этот код работает нормально, я могу читать ход загрузки, но теперь я хотел бы удалить инициализацию HttpClient из моего класса и вместо этого внедрить IHttpClientFactory, который есть у хороших людей в Microsoft предоставил. На данный момент я обнаружил, что могу настроить это в своем стартовом классе следующим образом:

services.AddTransient(); Services.AddHttpClient("api", opt => { opt.BaseAddress = new Uri(configuration.GetValue("HttpClientConfig:BaseUrl")); }) .AddHttpMessageHandler() .ConfigurePrimaryHttpMessageHandler(() => { вернуть новый HttpClientHandler() { Разрешитьавтоперенаправление = ложь, UseDefaultCredentials = true }; }); и внедряю куда хочу. Теперь мой вопрос: как и где я могу получить доступ к HttpReceiveProgress теперь, когда я использую подход DI:

var client = _httpClientFactory.CreateClient("api"); вместо первого более традиционного подхода?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»