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

.net core 如何使用IHttpClientFactory在Blazor服务器中配置HttpClient基址,.net-core,blazor,dotnet-httpclient,blazor-server-side,httpclientfactory,.net Core,Blazor,Dotnet Httpclient,Blazor Server Side,Httpclientfactory,我正在尝试使用IHttpClientFactory在Blazor服务器中配置HttpClient的基址,但遇到运行时异常: services.AddHttpClient("ApiClient", (provider, client) => { var uriHelper = provider.GetRequiredService<NavigationManager>(); client.BaseAddress

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

    services.AddHttpClient("ApiClient", (provider, client) =>
    {
        var uriHelper = provider.GetRequiredService<NavigationManager>();
        client.BaseAddress = new Uri(uriHelper.BaseUri);
    });


有人知道这里可能有什么问题吗?

基本url在
配置服务期间不可用
您可以传递它或创建服务:

services.AddHttpClient();
services.AddTransient<ApiService>();
一个组成部分:

   Base Address : @ApiService.HttpClient.BaseAddress
        
    @code {
        [Inject]
        public ApiService ApiService { get; set; }   
        
    }

将此添加到服务中:

    var baseAddress = "http://address-goes-here/";
    services.AddScoped(sp =>
    {
        var client = new HttpClient();
        client.BaseAddress = new Uri(baseAddress);
        return client;
    });

NavigationManager
是否已在DI容器中注册?我认为运行时正在确保DI中存在
NavigationManager
。对于Blazor Wasm
builder.Services.AddHttpClient(“ApiClient”,client=>client.BaseAddress=newURI(builder.hostenEnvironment.BaseAddress))刚刚工作。在3.x中应该可以正常工作。您使用的是5.xYes版本吗?我使用的是5.0-preview8,但我用3.1测试了它,得到了相同的结果。@Mihaimeh我想我们需要更多地查看您的代码。我将您的代码粘贴到了一个新的.net5.x中,它按照enet的建议运行良好。提供了NavigationManager。
   Base Address : @ApiService.HttpClient.BaseAddress
        
    @code {
        [Inject]
        public ApiService ApiService { get; set; }   
        
    }
    var baseAddress = "http://address-goes-here/";
    services.AddScoped(sp =>
    {
        var client = new HttpClient();
        client.BaseAddress = new Uri(baseAddress);
        return client;
    });