Dot-Net-Core

如何使用 IHttpClientFactory 在 Blazor Server 中配置 HttpClient 基地址

  • November 14, 2020

我正在嘗試使用在伺服器中配置HttpClient的基地址,但出現執行時異常:Blazor``IHttpClientFactory

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

異常截圖

任何人都知道這裡可能是什麼問題?

ConfigureServices在您可以傳遞它或創建服務期間,基本 url 不可用:

services.AddHttpClient();
services.AddTransient<ApiService>();

服務:

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; }
}

一個組件:

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

引用自:https://stackoverflow.com/questions/63828177