首页 > 解决方案 > 跨子应用强类型 HttpClient

问题描述

我正在尝试在 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);
    }
})

我错过了什么吗?

标签: c#dependency-injection

解决方案


我找到了一种解决方法,但我不确定它有多好。

我用这个创建我的服务:

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

并且我的 HttpClientType 到处都是一样的。


推荐阅读