San*_*dro 3 c# dependency-injection .net-core asp.net-core
我想使用类型化的 HTTP 客户端,所以我在ServiceCollection
services.AddHttpClient<ApiService>();
Run Code Online (Sandbox Code Playgroud)
客户端发出的所有请求都必须经过身份验证。所以我需要稍微修改一下上面的代码片段:
services.AddHttpClient<ApiService>(c =>
{
c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "");
});
Run Code Online (Sandbox Code Playgroud)
不记名令牌需要每 5 分钟更新一次,因此我需要创建需要依赖项的服务,例如 HttpClient(用于身份验证并获取令牌)和 MemoryCache(用于存储令牌(只要令牌有效))。
问题是,正如您所看到的,这仍然处于服务提供者构建之前的阶段,所以我目前无法解决任何问题......我在这里有什么选择?
您可以像这样访问 ServiceProvider:
services.AddHttpClient<ApiService>(provider, c) =>
{
var token = provider.GetRequiredService<MyTokenService>().GetToken();
c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
});
Run Code Online (Sandbox Code Playgroud)
如果您无权访问提供程序的重载,您将需要更新您的依赖项。
AddHttpClient将注册一个瞬态客户端,以便每次将其注入某处时 func(“工厂方法”)都会运行。
| 归档时间: |
|
| 查看次数: |
2430 次 |
| 最近记录: |