初始化后将 HttpMessageHandler 设置为 HttpClient 的实例

Posted

技术标签:

【中文标题】初始化后将 HttpMessageHandler 设置为 HttpClient 的实例【英文标题】:Set HttpMessageHandler to an instance of HttpClient after initialization 【发布时间】:2016-05-06 07:27:40 【问题描述】:

我想在不同的请求之间共享一个HttpClient 的实例,幸运的是这个类可以安全地同时使用。

但我需要为每个单独的请求设置HttpMessageHandler,因为它们可能有不同的 ClientCertificates。显然这只能通过构造函数完成,初始化后不可用!

知道如何在初始化后设置这个属性吗?或解决方法?

【问题讨论】:

我想知道你是否解决了这个问题。我有一些非常相似的东西。 【参考方案1】:

您可能希望使用 WebRequestHandler 作为添加到 HttpClient 构造函数的处理程序,保留其引用,然后根据每个请求更改证书。 此链接可能会有所帮助:https://blogs.msdn.microsoft.com/henrikn/2012/08/07/httpclient-httpclienthandler-and-webrequesthandler-explained/

【讨论】:

【参考方案2】:

在实例化后不完全设置它,但这种方法是否适用于您的情况?

【讨论】:

这个答案不会“连接” HttpClient 和注入的处理程序。只能在 HttpClient 的构造函数中指定处理程序。所以这并不能提供解决方案。

以上是关于初始化后将 HttpMessageHandler 设置为 HttpClient 的实例的主要内容,如果未能解决你的问题,请参考以下文章

从配置文件配置 HttpClient/HttpMessageHandler

干货.NET WebApi HttpMessageHandler管道

通过 StructureMap 定义“HttpClient”单例会导致有关“HttpMessageHandler”未在运行时配置的错误

是单例 HttpClient X 分钟后接收新的 HttpMessageHandler

使用特定的 HttpMessageHandler 注入单实例 HttpClient

Fabric.js 在初始化后将我的画布大小更改为 300x150