C# 如何在Blazor WebAssemly应用程序中引用IHttpClientFactory?

C# 如何在Blazor WebAssemly应用程序中引用IHttpClientFactory?,c#,blazor,blazor-webassembly,httpclientfactory,C#,Blazor,Blazor Webassembly,Httpclientfactory,在VS2019中,我尝试在Blazor WebAssemply应用程序中使用HttpClient进行测试。创建新项目时,我选择了.Net Core 3.1选项。在Program.cs中,HttpClient服务注册如下: builder.Services.AddScoped(sp=>newhttpclient{BaseAddress=newuri(builder.HostEnvironment.BaseAddress)}); 在“框架”部分下,列出了system.net.http 我们遇到了无

在VS2019中,我尝试在Blazor WebAssemply应用程序中使用
HttpClient
进行测试。创建新项目时,我选择了
.Net Core 3.1
选项。在Program.cs中,
HttpClient
服务注册如下:

builder.Services.AddScoped(sp=>newhttpclient{BaseAddress=newuri(builder.HostEnvironment.BaseAddress)});
在“框架”部分下,列出了
system.net.http

我们遇到了无法将
@inject IHttpClientFactory http
添加到新Razor组件的问题。错误消息是:

错误CS0246找不到类型或命名空间名称“IHttpClientFactory”(是否缺少using指令或程序集引用?)


Microsoft站点上的在线文档显示
IHttpClientFactory
是在
System.Net.Http
包中定义的。我遇到的错误的根本原因是什么?如何修复它?

您需要安装以下Nuget软件包:Microsoft.Extensions.Http

,但为什么不直接注入
HttpClient
?这就是将其范围限定到DI范围的想法。您不需要也不希望WebAssembly应用程序中的factory模式。Henk Holterman:“不需要也不希望…”然而,默认模板中默认使用IHttpClientFactory。你想知道为什么吗?这值得提出一个新问题。请创建一个新问题,我将尝试回答它…;}我确实尝试过使用Microsoft.extension.http Nuget包。使用@inject IHttpClientFactory时已成功编译代码。但是,出于某种原因,剃须刀页面不起作用。因此,我放弃了使用IHttpClientFactory,转而使用HttpClient并使用.NET5创建WebAssembly应用程序。请在另一篇帖子中查看更多详细信息: