You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor .NET 8 WebAssembly如何正确注册HttpClient?

.NET 8 Blazor WebAssembly 正确注册 HttpClient 的方法

错误原因

你注册的是命名HttpClient(标识为"My.ServerAPI"),但组件中直接注入的是无命名的HttpClient服务,DI容器无法找到匹配的服务实例,因此抛出InvalidOperationException。

解决方案

方案1:注入命名HttpClient

修改组件中的注入代码,明确指定要注入的命名客户端:

// 原错误注入方式
// [Inject]
// public HttpClient Http { get; set; } = default!;

// 修改为指定命名客户端
[Inject]
[FromKeyedServices("My.ServerAPI")]
public HttpClient Http { get; set; } = default!;

方案2:注册默认(无命名)HttpClient

如果希望保持组件中直接注入HttpClient的方式不变,可修改Program.cs中的注册代码,注册默认HttpClient:

// 移除命名标识,注册默认HttpClient
builder.Services.AddHttpClient(client => 
    client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
    .AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();

补充说明

在Blazor WebAssembly的DI体系中,命名HttpClient和默认HttpClient是相互独立的服务,容器不会自动将命名客户端作为默认HttpClient实例提供,必须通过[FromKeyedServices]指定命名,或者直接注册无命名的默认客户端。

内容的提问来源于stack exchange,提问作者coolblue2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:21:14