c# - 调用包含两个不同基地址的多个 httpclient
问题描述
为了实现我的最终目标,我已经阅读了命名客户和打字客户。但是,我仍然不明白我需要如何实现 or 。我有一个 blazor 服务器端项目,在 startup.cs 文件中我将其设置为
services.AddSingleton(sp => new HttpClient { BaseAddress = new Uri("http://localhost:36626") });
services.AddSingleton(sp => new HttpClient { BaseAddress = new Uri("https://localhost:5443") });
我知道如果我这样做,第一个基地址将被完全覆盖,并且由于第二个基地址而不再是设置的基地址。我将如何进行这项工作,这样我就有两个独立的 httpclients,它们将有两个独立的基地址,而不必因为最近的代码行而丢失一个?
解决方案
如文档中所述,主要区别在于您将如何通过依赖注入获取实例。
使用命名客户端,您需要注入工厂,然后通过字符串获取客户端。
var client = _clientFactory.CreateClient("github");
使用Typed Client,您可以将所需的客户端作为类型注入。
//GitHubService encapsulate an HTTP client
public TypedClientModel(GitHubService gitHubService)
{
_gitHubService = gitHubService;
}
他们都为您的问题提供了解决方案。选择更多的是您对每个依赖注入方法的舒适程度。我个人更喜欢 Typed 客户端。
推荐阅读
- netsuite - 使用 if else 和复选框的电子邮件模板的语法错误
- html - 如何自动更新烧瓶网页?
- ansible - Ansible AWX 获取数据,无法定位文件
- vhdl - VHDL 测试台代码未显示 1 位全加法器的输出结果
- java - 如何将 XSD 用于非命名空间的文档
- android - Android UI 测试启动片段
- javascript - React 星级评分组件
- python - sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)没有这样的列:user.first_name
- ios - 当视频 url 保存在画廊中时显示错误:Domain=NSCocoaErrorDomain Code=-1 "(null)" in swift
- android - 如何检测和解决android应用程序性能问题?