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

Blazor Server调用WebApi时Microsoft.AspNetCore.Blazor.HttpClient的替代方案

Blazor Server 调用WebApi HttpClient弃用包替代方案

背景说明

Microsoft.AspNetCore.Blazor.HttpClient 包早在.NET Core 3.0 版本就已正式弃用,相关JSON扩展方法已整合进官方原生类库,无需再单独安装该Nuget包。

推荐替代方案(无需额外安装Nuget包,.NET 5+ 原生支持)

  1. 引入官方自带的JSON扩展命名空间
    在你的EmployeeService类所在文件头部添加引用:
using System.Net.Http.Json;
  1. 替换原有扩展方法
    原有的GetJsonAsync方法替换为原生的GetFromJsonAsync方法,修改后的代码如下:
public class EmployeeService : IEmployeeService
{
    private readonly HttpClient httpClient;

    public EmployeeService(HttpClient httpClient)
    {
        this.httpClient = httpClient;
    }

    public async Task<IEnumerable<Employee>> GetEmployees()
    {
        // 可选传入JsonSerializerOptions配置反序列化规则,比如大小写不敏感
        return await httpClient.GetFromJsonAsync<Employee[]>("api/employees", new JsonSerializerOptions
        {
            PropertyNameCaseInsensitive = true
        });
    }
}
  1. 注册HttpClient服务
    在Blazor Server项目的Program.cs文件中添加服务注册,避免注入报错:
// 替换为你实际的WebApi根地址,如果是同站点部署可直接填当前站点地址
builder.Services.AddHttpClient<IEmployeeService, EmployeeService>(client =>
{
    client.BaseAddress = new Uri("https://你的webapi根地址/");
});

兼容老代码的替代方案(可选)

如果需要兼容旧版本的代码写法,可以安装Nuget包Microsoft.AspNet.WebApi.Client,该包包含原有的GetJsonAsync等扩展方法,原有代码无需修改即可运行。

常见注意事项

  • 若WebApi与Blazor Server跨域部署,需要在WebApi端配置CORS策略,允许Blazor Server的域名访问接口
  • 反序列化时如果出现字段匹配为null的情况,优先检查是否添加了PropertyNameCaseInsensitive = true配置,适配接口返回的JSON字段大小写规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:36:05