将 HttpClient 注入 Razor class 库中的 Blazor 组件
Injecting an HttpClient into a Blazor Component in a Razor class library
我从 Blazor WebAssembly 模板创建了一个解决方案,我在其中勾选了 ASP.NET Core hosted 复选框,所以我有 Client
、Server
、Shared
项目解决方案。
为此解决方案我添加了一个名为 BlogsRcl 的 Razor class 库(没有选中“支持页面和视图”),其中我有一个名为 Blogs.razor
.
的 Blazor 组件
我希望能够将 HttpClient 注入到我的 Blogs.razor
组件中,就像 'Client` project has, i.e. '@inject HttpClient Http' 中的 FetchData.razor
组件一样。
在我的 BlogsRcl 项目的“.csproj”文件中,我添加了 either/or/both 对
的引用
<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
-文件的顶部,或者对于此类通用用途更好,将它们添加到 _Imports.razor
-文件。
@using System.Net.Http
@using System.Net.Http.Json
我从 Blazor WebAssembly 模板创建了一个解决方案,我在其中勾选了 ASP.NET Core hosted 复选框,所以我有 Client
、Server
、Shared
项目解决方案。
为此解决方案我添加了一个名为 BlogsRcl 的 Razor class 库(没有选中“支持页面和视图”),其中我有一个名为 Blogs.razor
.
我希望能够将 HttpClient 注入到我的 Blogs.razor
组件中,就像 'Client` project has, i.e. '@inject HttpClient Http' 中的 FetchData.razor
组件一样。
在我的 BlogsRcl 项目的“.csproj”文件中,我添加了 either/or/both 对
的引用<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
-文件的顶部,或者对于此类通用用途更好,将它们添加到 _Imports.razor
-文件。
@using System.Net.Http
@using System.Net.Http.Json