首页 > 解决方案 > 将 HttpClient 注入 Razor 类库中的 Blazor 组件

问题描述

我从 Blazor WebAssembly 模板创建了一个解决方案,我在其中选中了 ASP.NET Core 托管复选框,因此我在解决方案中有Client, Server,Shared项目。

在这个解决方案中,我添加了一个名为 BlogsRcl 的 Razor 类库(不检查“支持页面和视图”),其中我有一个名为Blogs.razor.

我希望能够将 HttpClient 注入到我Blogs.razor的组件中,就像FetchData.razor“Client”项目中的组件一样,即“@inject HttpClient Http”。

在我的 BlogsRcl 项目的“.csproj”文件中,我添加了一个/或/两个引用

<PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0.0" />
<PackageReference Include="System.Net.Http" Version="5.0.0" />

其中,一切都是犹太洁食Microsoft.Extensions.Http,但是当我添加时System.Net.Http,解决方案中的每个项目都抱怨它是Unable to find package System.Net.Http with version (>= 5.0.0).

然而,当我在项目HttpClientFetchData.razor组件中执行 Go To Definition 时Client,元数据显示Assembly System.Net.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

编辑:我也尝试添加<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />,但无济于事。

我错过了什么?

标签: blazorblazor-client-sideblazor-webassemblyasp.net-blazorasp.net-core-5.0

解决方案


RCL ( <Project Sdk="Microsoft.NET.Sdk.Razor">) 不需要任何这些包引用,因为所需的包引用是框架的一部分。在 Visual Studio 中,您可以通过展开Project/Depedencies/Frameworks/Microsoft.NETCore.App/.

但是您必须确保您还添加了所需的 using 指令。要么将它们添加到您的.razor-file 的顶部,或者对于此类通用使用更好,将它们添加到_Imports.razor-file。

@using System.Net.Http
@using System.Net.Http.Json

推荐阅读