4 votes

Comment configurer l'adresse de base HttpClient dans Blazor Server en utilisant IHttpClientFactory

Je tente de configurer l'adresse de base de HttpClient dans un serveur Blazor en utilisant IHttpClientFactory mais je rencontre une exception d'exécution :

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

System.InvalidOperationException: 'Impossible de résoudre le service de portée 'Microsoft.AspNetCore.Components.NavigationManager' à partir du fournisseur racine.'

Capture d'écran de l'exception

Quelqu'un sait quel pourrait être le problème ici ?

5voto

Orak Points 29

L'URL de base n'est pas disponible pendant ConfigureServices vous pouvez le passer ou créer un service :

services.AddHttpClient();
services.AddTransient();

Le service :

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

Un composant :

   Adresse de base : @ApiService.HttpClient.BaseAddress

    @code {
        [Inject]
        public ApiService ApiService { get; set; }   

    }

0voto

John Points 59

Ajoutez ceci aux services :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X