Синглтон Blazor HttpClient работает некорректно - PullRequest
0 голосов
/ 27 мая 2020

У меня есть клиентский проект Blazor WebAssembly, который подключается к существующему API. При входе в систему токен JWT сохраняется в локальном хранилище.

Я использую NSwag для создания клиента для моего API, который вводится и изменяет HttpClient на синглтон.

builder.Services.AddSingleton(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddSingleton<Client>();

Я предполагаю, что Клиент (мой сгенерированный клиент NSwag) использует HttpClient из DI. Поскольку после входа в систему я звоню, чтобы получить дополнительную информацию о пользователе с токеном. Что работает.

Я добавил токен следующим образом:

@inject Client MambaClient
@inject HttpClient HttpClient

....

HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.Token);

Однако, если я попытаюсь выполнить запрос на другой странице, я теперь получаю 401 Unauthorized, поэтому заголовок auth исчез из запрос, и я не уверен, почему.

Есть какие-нибудь советы?

Конструктор клиента выглядит так:

public Client(System.Net.Http.HttpClient httpClient)
{
    _httpClient = httpClient;
    _settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(() =>
    {
        var settings = new Newtonsoft.Json.JsonSerializerSettings();
        UpdateJsonSerializerSettings(settings);
        return settings;
    });
}
...