#c# #.net-core #polly
Вопрос:
Я пытался реализовать следующую статью: https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory
Я использую HttpFactory в своем проекте рабочей службы для получения некоторых данных, я хочу сделать его более надежным Microsoft.Extensions.Http.Polly
.
Проблема в том, что я продолжаю получать следующую ошибку, даже несмотря на то, что пакет установлен :
Ошибка CS0234
Имя типа или пространства имен ‘Polly’ не существует в пространстве имен ‘Microsoft.Расширения.Http’ (вам не хватает ссылки на сборку?)
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="5.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..SolutionLibrarySolutionLibrary.csproj" />
</ItemGroup>
</Project>
Что я пропустил?
Комментарии:
1. Пожалуйста, не включайте решение в свой вопрос. Пожалуйста, оставьте для этого отдельный пост.
Ответ №1:
Вы упускаете из виду, что имя пакета или сборки не совпадает с именами имен, в которых находится код. Хотя часто принято считать, что пакет с именем «Foo» будет занимать пространство имен «Foo», а связанные пространства имен будут чем-то вроде «Foo.Bar» и т. Д. это не единственный способ сделать это.
Вы можете узнать, какие пространства имен и классы предоставляет вам библиотека, используя обозреватель объектов:
- В Visual Studio выберите «Просмотр»
- Выберите «Обозреватель объектов»
- Вы увидите список сборок, на которые ссылается ваше решение
- Прокрутите вниз до «Microsoft.Extensions.Http.Polly» и разверните его
- Вы можете видеть, что он объявляет код в 4 пространствах имен:
- Майкрософт.Расширения.DependencyInjection
- Майкрософт.Расширения.Http
- Майкрософт.Расширения.Внутренний
- Polly
Нажатие на «PollyHttpClientBuilderExtensions» показывает методы, доступные классу:
И, как следует из названия, сигнатура метода, отображаемая на нижней панели, указывает, что выбранный метод является методом расширения on IHttpClientBuilder
, поэтому вы должны использовать его в сочетании с. services.AddHttpClient()
Кажется вероятным, что это тот, к которому вы хотите получить доступ в своем коде. Поэтому вы должны включить следующее using
:
using Microsoft.Extensions.DependencyInjection;
Комментарии:
1. Большое вам спасибо, я провел еще несколько исследований после вашего понимания и заставил его работать! Добавлен рабочий код в сообщение для дальнейшего использования