【发布时间】:2020-07-20 16:25:35
【问题描述】:
当使用 HttpClient 实例和 HttpClientHandler 实例(.Net Framework,不使用 Core)时,是否可以稍后以任何方式访问 HttpClientHandler 实例/其属性(用于只读目的)?
不幸的是,将 HttpClientHandler 实例创建为以后引用的变量是不可能的,因为 HttpClient 实例正在作为参数传递给库,我们无法更改调用客户端。
例如,我想实现这样的目标:
// Created in client we cant modify
var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = True, PreAuthenticate = True });
// Class we can modify
public void DoSomething(HttpClient client)
{
if (client.HttpClientHandler.UseDefaultCredentials == True) Console.WriteLine("UseDefaultCredentials: True");
}
【问题讨论】:
-
var handler = client.GetType().BaseType.GetField("handler", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(client) as HttpClientHandler; -
感谢 Jimi,这正是我想要实现的目标 - 很享受!也为未来学到了一些东西!
标签: c# .net httpclient httpclienthandler