繁体   English   中英

Blazor wasm 依赖注入 - null http 客户端

[英]Blazor wasm dependency injection - null http client

我正在创建一个使用 B2C 进行身份验证的 dotnet 6 blazor wasm 网站(核心托管),但在使用 http 客户端时遇到问题。

在 program.cs 我有以下 DI:

builder.Services.AddHttpClient<IBbtDataService, BbtDataService>(client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
.AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();

这个 Bbt 服务应该被注入到 FetchBbtData 页面后面的代码中,如下所示:

[Authorize]
public partial class FetchBbtData
{
    [Inject]
    public IBbtDataService BbtDataService { get; set; }
    public IEnumerable<ClientOrg> ClientOrgs { get; set; }

    protected async override Task OnInitializedAsync()
    {
        ClientOrgs = (await BbtDataService.GetClientOrgList()).ToList();
    }
}

BbtDataService 的代码如下:

public class BbtDataService : IBbtDataService
{
    private readonly HttpClient httpClient;

    public BbtDataService(HttpClient httpClient)
    {
        httpClient = httpClient;
    }

    public async Task<IEnumerable<ClientOrg>> GetClientOrgList()
    {
        return await httpClient.GetFromJsonAsync<IEnumerable<ClientOrg>>($"api/clients");
    }
}

如果我在 BbtDataService 的构造函数上放置一个断点,我可以看到 httpClient 参数是有效的并且包含正确的基础 url。 但是,当执行然后在 GetClientOrgList 方法中遇到另一个断点时,私有只读字段 httpClient 的值是 null - 即使这是在构造函数中设置的。

有人看到我哪里出错了吗?

您正在将参数分配给自身。 添加 2 _

private readonly HttpClient _httpClient;

public BbtDataService(HttpClient httpClient)
{
   _httpClient = httpClient;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM