使用依赖注入配置HttpClient,其中一个客户端需要来自另一个的信息

时间:2019-06-23 09:21:05

标签: c# dependency-injection .net-core dotnet-httpclient

我有一个.NET Core 3.0控制台应用程序(尽管我打算稍后将其更改为Blazor应用程序。)

在我的Program类的[HH]:MM方法中,我正在使用Microsoft here描述的模式配置依赖项注入。

特别是,我想使用here中所述的“命名客户端”模式来注册少数public static void Main个实例。

除了以下一个问题之外,一切都很好:我的第二个和第三个HttpClient实例应该有一个HttpClient来传递会话ID。但是,在执行API命令以使用第一个DefaultRequestHeader实例登录到远程服务器之前,我不知道会话ID的值。我该怎么办?

到目前为止,我的代码如下。

我可以以某种方式获取对第一个HttpClient实例的引用,并从此代码块内调用我的HttpClient方法吗?还是我可以稍后在不同的代码块中调用Login方法,然后在实例化很久之后将适当的Login添加到其他DefaultRequestHeader实例中?

HttpClient

1 个答案:

答案 0 :(得分:0)

您是否可以直接使用IHttpClientFactory并在需要时使用凭据生成HttpClient?换句话说,与其尝试注册所有单个HttpClient,不如正常注册IHttpClientFactory。将其注入需要HttpClient的类中,然后在其中使用您的凭据创建它?那就是我会做的。毕竟,IHttpClientFactory只是一个包装器类,它使用工厂模式生成您的HttpClients。

另外:您可以使用扩展方法为HttpClient配置预设值,以将重复的代码保存在各处,以保持一致。