netcoreapp3.1 worker服务项目中如何使用Microsoft.Extensions.Http.Polly
How to use Microsoft.Extensions.Http.Polly in netcoreapp3.1 worker service project
我正在尝试实现以下文章:
https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory
我在我的 Worker Service 项目中使用 HttpFactory 来获取一些数据,我想使用 Microsoft.Extensions.Http.Polly
.
使其更健壮
问题是即使安装了软件包,我仍然收到以下错误:
Error CS0234
The type or namespace name 'Polly' does not exist in the namespace 'Microsoft.Extensions.Http' (are you missing an assembly reference?)
<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="..\SolutionLibrary\SolutionLibrary.csproj" />
</ItemGroup>
</Project>
我错过了什么?
您没有注意到包或程序集名称与代码所在的命名空间不同。尽管通常约定名为“Foo”的包将占用命名空间“Foo”和相关名称空间将类似于“Foo.Bar”等。这不是唯一的方法。
您可以使用对象浏览器找出库为您提供的名称空间和 classes:
- 在Visual Studio中,select“查看”
- Select“对象浏览器”
- 您将看到您的解决方案引用的程序集列表
- 向下滚动到“Microsoft.Extensions.Http.Polly”并将其展开
- 可以看到它在4个命名空间中声明了代码:
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Http
- Microsoft.Extensions.Internal
- 波莉
单击“PollyHttpClientBuilderExtensions”会显示 class 提供的方法:
而且,顾名思义,在下方窗格中显示的方法签名表明selected方法是IHttpClientBuilder
上的扩展方法,因此您必须将其与services.AddHttpClient()
。这似乎是您想要在代码中访问的那个。因此,您应该包括以下 using
:
using Microsoft.Extensions.DependencyInjection;
我正在尝试实现以下文章: https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory
我在我的 Worker Service 项目中使用 HttpFactory 来获取一些数据,我想使用 Microsoft.Extensions.Http.Polly
.
问题是即使安装了软件包,我仍然收到以下错误:
Error CS0234
The type or namespace name 'Polly' does not exist in the namespace 'Microsoft.Extensions.Http' (are you missing an assembly reference?)
<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="..\SolutionLibrary\SolutionLibrary.csproj" />
</ItemGroup>
</Project>
我错过了什么?
您没有注意到包或程序集名称与代码所在的命名空间不同。尽管通常约定名为“Foo”的包将占用命名空间“Foo”和相关名称空间将类似于“Foo.Bar”等。这不是唯一的方法。
您可以使用对象浏览器找出库为您提供的名称空间和 classes:
- 在Visual Studio中,select“查看”
- Select“对象浏览器”
- 您将看到您的解决方案引用的程序集列表
- 向下滚动到“Microsoft.Extensions.Http.Polly”并将其展开
- 可以看到它在4个命名空间中声明了代码:
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Http
- Microsoft.Extensions.Internal
- 波莉
单击“PollyHttpClientBuilderExtensions”会显示 class 提供的方法:
而且,顾名思义,在下方窗格中显示的方法签名表明selected方法是IHttpClientBuilder
上的扩展方法,因此您必须将其与services.AddHttpClient()
。这似乎是您想要在代码中访问的那个。因此,您应该包括以下 using
:
using Microsoft.Extensions.DependencyInjection;