如何使用 IHttpClientFactory 在 Blazor 服务器中配置 HttpClient 基地址

Mih*_*myh 4 dotnet-httpclient .net-core blazor httpclientfactory blazor-server-side

我正在尝试HttpClient在使用的Blazor服务器中配置的基地址,IHttpClientFactory但出现运行时异常:

    services.AddHttpClient("ApiClient", (provider, client) =>
    {
        var uriHelper = provider.GetRequiredService<NavigationManager>();
        client.BaseAddress = new Uri(uriHelper.BaseUri);
    });
Run Code Online (Sandbox Code Playgroud)
System.InvalidOperationException: 'Cannot resolve scoped service 'Microsoft.AspNetCore.Components.NavigationManager' from root provider.'
Run Code Online (Sandbox Code Playgroud)

异常截图

有谁知道这里可能是什么问题?

Bri*_*ker 6

ConfigureServices您可以传递它或创建服务期间,基本 url 不可用:

services.AddHttpClient();
services.AddTransient<ApiService>();
Run Code Online (Sandbox Code Playgroud)

服务:

public class ApiService
{
    public ApiService(HttpClient httpClient, NavigationManager navigationManager)
    {
        HttpClient = httpClient;
        NavigationManager = navigationManager;
        HttpClient.BaseAddress = new Uri(NavigationManager.BaseUri);
    }

    public HttpClient HttpClient { get; }
    public NavigationManager NavigationManager { get; }
}
Run Code Online (Sandbox Code Playgroud)

一个组件:

   Base Address : @ApiService.HttpClient.BaseAddress
        
    @code {
        [Inject]
        public ApiService ApiService { get; set; }   
        
    }
Run Code Online (Sandbox Code Playgroud)