我有一个.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
答案 0 :(得分:0)
您是否可以直接使用IHttpClientFactory并在需要时使用凭据生成HttpClient?换句话说,与其尝试注册所有单个HttpClient,不如正常注册IHttpClientFactory。将其注入需要HttpClient的类中,然后在其中使用您的凭据创建它?那就是我会做的。毕竟,IHttpClientFactory只是一个包装器类,它使用工厂模式生成您的HttpClients。
另外:您可以使用扩展方法为HttpClient配置预设值,以将重复的代码保存在各处,以保持一致。