Blazor WebAssembly .NET 8 中的 HttpClient 注入问题

问题描述 投票:0回答:1

我在 .NET 8 上运行的 Blazor WebAssembly 应用程序遇到错误。该错误在应用程序启动时发生:

InvalidOperationException:无法为类型“SGC.Client.Layout.NavMenu”上的属性“Http”提供值。没有类型为“System.Net.Http.HttpClient”的已注册服务。

这是我在客户端的 Program.cs 文件:

var builder = WebAssemblyHostBuilder.CreateDefault(args);

builder.Services.AddHttpClient();
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

builder.Services.AddAuthorizationCore();
builder.Services.AddCascadingAuthenticationState();
builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>();

builder.Services.AddRadzenComponents();

builder.Services.AddScoped<DialogService>();
builder.Services.AddScoped<NotificationService>();
builder.Services.AddScoped<ContextMenuService>();
builder.Services.AddScoped<TooltipService>();

await builder.Build().RunAsync();

当我将 HttpClient 注入任何页面时都会发生该错误。例如:

@page "/example"
@inject HttpClient Http

<h3>Example Page</h3>

如何解决此问题并将 HttpClient 正确注入到我的 Blazor WebAssembly 应用程序中?

确保 HttpClient 已在 Program.cs 中的服务中注册。

blazor httpclient webassembly
1个回答
0
投票

您希望在创建 HttpClient 时使用 IHttpClientFactory,因为有一些底层代码可以管理套接字等的生命周期。您可以在此处阅读更多内容,以确定实现所需 DI 模式的最佳方式:

https://learn.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests#issues-with-the-original- httpclient-class-available-in-net-core

© www.soinside.com 2019 - 2024. All rights reserved.