在Blazor应用程序中,当使用HttpClient发送异步请求时,如果在该请求的生存期内出现依赖项注入更改,则可能会出现System.OperationCanceledException异常。这是因为更改了依赖项后,可能会破坏HttpClient请求的cancellation token机制。为了避免这个问题,可以通过将HttpClient实例作为transient服务进行注入来解决此问题。这将确保每次请求时都会创建新的HttpClient实例,从而避免潜在的cancellation token问题。
代码示例:
1.在Startup.cs中将HttpClient服务注入为transient:
services.AddTransient
2.在组件中注入HttpClient服务:
@inject HttpClient HttpClient
3.发送异步请求:
var result = await HttpClient.SendAsync(request);