【发布时间】:2015-10-03 13:29:58
【问题描述】:
我们什么时候应该在 HttpRequestMessage 对象中使用标头而不是 HttpClient 中的标头??
我们需要添加授权(总是在变化)和一些自定义标题(总是在变化)
问题
- 首选方法是什么?
-
我应该添加常见的吗 HttpClient 和请求的标头(所有请求都相同) 基于 HttpRequestMessage 对象的标头??
//HttpRequestMessage Code HttpRequestMessage reqmsg =new HttpRequestMessage(); reqmsg.Headers.Authorization =new AuthenticationHeaderValue("some scheme"); reqmsg.Headers.Add("name","value"); //HttpClient Code HttpClient client =new HttpClient(); client.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("some scheme"); client.DefaultRequestHeaders.Add("name", "value");
【问题讨论】:
-
也许是个挑剔,但目前的想法似乎是将 HttpClient 实例化为单例,而不是作为短期对象(在这种情况下,不要忘记 Dispose/use 'using') .
-
@MaxBarraclough 现在的普遍共识似乎是不将 HttpClient 包装在 using 块中,因为它会泄漏连接而不仅仅是回收HttpClient。请查看这些 SO 问题中的一些 cmets:Question-1 和 Question-2
-
@AnthonyWalsh 这篇文章同意你的观点:似乎我的第一个建议很好,但我的第二个建议不是:aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong
标签: c# asp.net-web-api httpclient asp.net-web-api2