Сильно введите HttpClient через субприложение - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь создать основное приложение с процессом аутентификации на WebApi, а затем приложение дает доступ к группе «подприложений» с использованием того же WebApi.

Для этого я зарегистрировал свой HttpClient с этим:

private void ConfigureServices(IConfiguration configuration, IServiceCollection services)
{
    services.AddHttpClient<BimFluxService>(); 
    services.AddSingleton<MainWindow>();
    services.AddSingleton<MainViewModel>();
}

Каждое вспомогательное приложение является отдельным решением, и для каждого из них мне нужно получить доступ к своему BimFluxService, которое инициируется следующим образом:

public BimFluxService(HttpClient client, ILogger<BimFluxService> logger)
{
    client.BaseAddress = new Uri("https://localhost:5001");
    Client = client;
    Logger = logger;
}

private HttpClient Client { get; }
internal static ILogger<BimFluxService> Logger { get; private set; }
public IUser User { get; private set; }

вкл. Основное приложение моего клиента работает правильно. Свойство IUser обновляется при аутентификации. Но в дополнительном приложении BimFluxService выглядит как новый экземпляр, а IUser не обновляется.

Я использую это для регистрации своего дополнения на хосте:

.ConfigureServices((context, services) =>
{
    ConfigureServices(context.Configuration, services);
    foreach (var initAddin in addins)
    {
        services = initAddin.RegisterApp(services);
    }
})

я что-то пропустил?

1 Ответ

0 голосов
/ 11 марта 2020

Я нашел обходной путь, но я не уверен, насколько он хорош.

Я создаю свои сервисы с этим:

services.AddHttpClient();
services.AddSingleton<BimFluxService>(); 

, и с этим мой HttpClientType везде одинаков .

...