初始化后将 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