【问题标题】:Injecting an HttpClient into a Blazor Component in a Razor class library将 HttpClient 注入 Razor 类库中的 Blazor 组件
【发布时间】:2021-04-04 03:00:47
【问题描述】:

我从 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 (&gt;= 5.0.0)

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

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

我错过了什么?

【问题讨论】:

    标签: blazor blazor-client-side blazor-webassembly asp.net-blazor asp.net-core-5.0


    【解决方案1】:

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

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

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

    【讨论】:

    • 伙计……我可以发誓我添加了 using 语句……这是一个没人会觉得有用的问题,哈哈。无论如何,谢谢。
    • @MichaelTranchida 呵呵,发生了!为你辩护——VS中的剃刀组件编辑器真的很糟糕,像这样的错误很容易被常规的.cs编辑器发现。迫不及待地等待新的基于 LSP 的剃须刀编辑器变得足够稳定以供使用......
    猜你喜欢
    • 2021-10-01
    • 2020-04-27
    • 2020-12-10
    • 2021-04-07
    • 2019-07-31
    • 2019-10-09
    • 2019-09-18
    • 2020-04-09
    • 2020-01-22
    相关资源
    最近更新 更多