Как ссылаться на IHttpClientFactory в приложении Blazor WebAssemly?

В VS 2019 я пытаюсь протестировать использование HttpClient в приложении Blazor WebAssemply. При создании нового проекта я выбрал параметр .Net Core 3.1. В Program.cs служба HttpClient зарегистрирована следующим образом:

builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

В разделе фреймворков указано system.net.http.

Мы столкнулись с проблемой невозможности добавить @inject IHttpClientFactory http в новый компонент Razor. Сообщение об ошибке было:

Ошибка CS0246 Не удалось найти тип или имя пространства имен «IHttpClientFactory» (вам не хватает директивы using или ссылки на сборку?)

В интерактивном документе на сайте Microsoft показано, что IHttpClientFactory определен в пакете theSystem.Net.Http. Какова основная причина возникающих у меня ошибок и как ее исправить?


person bedrock    schedule 25.03.2021    source источник
comment
Но почему вы вместо этого просто не вводите HttpClient? Это своего рода идея ограничить область видимости DI.   -  person Kirk Woll    schedule 25.03.2021
comment
Вам не нужен и не нужен фабричный шаблон в приложении WebAssembly.   -  person Henk Holterman    schedule 25.03.2021
comment
Хенк Холтерман: не нужно и не хочу ... И все же IHttpClientFactory по умолчанию используется в шаблоне по умолчанию. Ты хочешь знать почему ? Это заслуживает нового вопроса. Пожалуйста, создайте новый вопрос, и я постараюсь на него ответить ...;}   -  person enet    schedule 25.03.2021
comment
Я пробовал использовать пакет Nuget Microsoft.extension.http. Код был успешно скомпилирован при использовании @inject IHttpClientFactory. Но по какой-то причине страница бритвы не работала. Итак, я отказался от использования IHttpClientFactory и вернулся к использованию HttpClient и созданию приложения WebAssembly с использованием .NET 5. Подробнее см. В другом сообщении: stackoverflow.com/questions/66805194/   -  person bedrock    schedule 29.03.2021


Ответы (1)


Вам необходимо установить следующий пакет Nuget: Microsoft.Extensions.Http

person David Eggenberger    schedule 28.03.2021