c# - 跨子应用强类型 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);
}
})
我错过了什么吗?
解决方案
我找到了一种解决方法,但我不确定它有多好。
我用这个创建我的服务:
services.AddHttpClient();
services.AddSingleton<BimFluxService>();
并且我的 HttpClientType 到处都是一样的。
推荐阅读
- php - 1X5矩阵树结构PHP数组
- node.js - 在NodeJS中检测一个数字是否可以被100整除
- python - 需要登录时使用 python 从 cloud.google.com 下载公共文件
- windows - 如何缩短 Git Bash 提示 (Windows)
- sql - 奇怪的 SQL 远程查询
- python - Python 子进程 - 在创建的新命令提示符中运行第二个命令
- swift - Firestore 收集侦听器大量读取
- php - 如何获取实例类名
- c# - BackgroundService 结束他分配的任务后会发生什么?
- django - Django - 使用下拉 URL 链接选项将值从模板传递到视图文件