将HttpClient注入Razor类库中的Blazor组件



我从Blazor WebAssembly模板创建了一个解决方案,在那里我签下了ASP。NET Core托管复选框,因此我在解决方案中有ClientServerShared项目。

对于这个解决方案,我添加了一个名为BlogsRcl的Razor类库(不检查"支持页面和视图"(,其中我有一个称为Blogs.razor的Blazor组件。

我希望能够将HttpClient注入到我的Blogs.razor组件中,就像"Client"项目中的FetchData.razor组件一样,即"@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)

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

编辑:我也尝试添加<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />,但没有成功。

我错过了什么?

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

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

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

最新更新