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

HttpClient依赖注入配置BaseAddress不生效问题求助

问题分析与解决方案

你的问题出在命名HttpClient的注入方式错误:你在Program.cs中注册了名为ProductApi的命名HttpClient,但组件中直接用@inject HttpClient ProductApi的方式无法正确获取到这个配置好的客户端——这种注入方式会拿到默认的HttpClient实例,而非你自定义配置的命名实例。

正确实现步骤

1. 组件中注入IHttpClientFactory

替换原来的@inject HttpClient ProductApi,改为注入工厂类:

@inject IHttpClientFactory HttpClientFactory

2. 在方法中获取命名HttpClient实例

在GetProduct方法里,通过工厂创建你配置好的ProductApi客户端:

private async Task GetProduct()
{
    var productApi = HttpClientFactory.CreateClient("ProductApi");
    HttpResponseMessage response = await productApi.GetAsync("Product");

    if (response.IsSuccessStatusCode)
    {
        var responseData = await response.Content.ReadFromJsonAsync<List<ProductModel>>();
        products = responseData;
    } 
}

3. 确认Program.cs配置(无需修改)

你原来的Program.cs配置是正确的,保持不变即可:

builder.Services.AddHttpClient("ProductApi", client =>
{
    client.BaseAddress = new Uri("https://localhost:7023/api/");
});

补充说明

  • 命名HttpClient由IHttpClientFactory统一管理创建,直接注入HttpClient只会获取到未配置的默认实例。
  • 如果是Blazor WebAssembly项目,检查是否有其他代码覆盖了HttpClient配置;如果是Blazor Server项目,确认服务注册顺序正确,没有后续代码修改ProductApi的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:57:05