![](/img/trans.png)
[英]Automatically Attaching Access Token to HTTP Client in Blazor wasm
[英]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.