如何在Blazor页面的构造函数中注入HttpClient?
Blazor组件用构造函数注入HttpClient的配置方法
之前你用@inject和[Inject]属性注入都正常,要换成构造函数注入,只需要两步:
1. 调整组件构造函数代码
保持构造函数的写法,建议把私有字段改成只读类型,更符合C#编码规范:
private readonly HttpClient _http; public myclass(HttpClient http) { _http = http; }
2. 在Program.cs里注册你的组件
Blazor组件默认是由框架直接实例化的,不会走依赖注入容器流程,所以要让容器自动注入HttpClient,必须把组件注册到DI容器中。打开项目的Program.cs文件,在builder.Build()执行之前添加如下注册代码:
builder.Services.AddTransient<myclass>();
这里选择
AddTransient是因为Blazor组件每次渲染都需要新实例,这个生命周期配置符合组件的使用特性。
额外提醒
- 不要同时使用
[Inject]属性和构造函数注入同一个HttpClient,避免注入逻辑冲突。 - 你之前用属性注入能正常运行,说明
HttpClient已经在DI容器中完成注册,这部分无需额外配置。
内容的提问来源于stack exchange,提问作者bilpor
相关产品推荐
相关产品推荐

