【发布时间】:2021-06-21 19:01:48
【问题描述】:
在 VS 2019 中,我尝试在 Blazor WebAssemply 应用程序中使用 HttpClient 进行测试。创建新项目时,我选择了.Net Core 3.1 选项。在 Program.cs 中,HttpClient 服务注册如下:
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
在“框架”部分下,列出了system.net.http。
我们遇到了无法将 @inject IHttpClientFactory http 添加到新 Razor 组件的问题。错误信息是:
错误 CS0246 找不到类型或命名空间名称“IHttpClientFactory”(您是否缺少 using 指令或程序集引用?)
Microsoft 网站上的在线文档显示IHttpClientFactory 是在System.Net.Http 包中定义的。我遇到的错误的根本原因是什么,我该如何解决?
【问题讨论】:
-
但是你为什么不直接注入
HttpClient呢?这就是将其范围限定为 DI 范围的想法。 -
你不需要也不想要 WebAssembly 应用程序中的工厂模式。
-
Henk Holterman:“不需要也不想……” 然而,默认模板中默认使用 IHttpClientFactory。你想知道为什么吗?这值得提出一个新问题。请创建一个新问题,我会尽力回答... ;}
-
我确实尝试过使用 Microsoft.extension.http Nuget 包。使用@inject IHttpClientFactory 时代码编译成功。但是,由于某种原因,剃须刀页面不起作用。所以,我放弃使用 IHttpClientFactory 并返回使用 HttpClient 并使用 .NET 5 创建 WebAssembly 应用程序。请在另一篇文章中查看更多详细信息:stackoverflow.com/questions/66805194/…
标签: c# blazor blazor-webassembly httpclientfactory