HttpClient 和连接:关闭 HttpRequestHeaders
HttpClient and Connection: close HttpRequestHeaders
我正在为 HttpClient 制作一个静态包装器,该对象标识符是 'Client'。代码如下。当我添加到选项 class 时,我遇到了 ConnectionClose 并且我正在考虑使其可配置,因为我希望其他开发人员能够根据需要配置它。
但是我读到的关于 Connection: close 的所有信息都表明我希望它保持活动状态。这个值应该一直是假的吗?或者是否存在关闭值 true 的有效用例?
protected void Setup(ApiCallerOptions options)
{
Client = CreateHttpClient();
Options = options;
ServicePointManager.FindServicePoint(new Uri(options.BaseAddress))
.ConnectionLeaseTimeout = options.ConnectionLeaseTimeout;
Client.BaseAddress = new Uri(options.BaseAddress);
Client.DefaultRequestHeaders.Accept.Clear();
Client.DefaultRequestHeaders.Accept.Add(options.ContentType);
Client.DefaultRequestHeaders.ConnectionClose = false;
}
RFC https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
14.10 Connection
可用于调试与保持活动的连接相关的问题,或者无论出于何种原因您根本不希望拥有持久连接。当显式设置为真正的 HttpClient 实例时,这些几乎是用例。
要回答你的问题,它应该是假的,否则性能会下降。
我正在为 HttpClient 制作一个静态包装器,该对象标识符是 'Client'。代码如下。当我添加到选项 class 时,我遇到了 ConnectionClose 并且我正在考虑使其可配置,因为我希望其他开发人员能够根据需要配置它。
但是我读到的关于 Connection: close 的所有信息都表明我希望它保持活动状态。这个值应该一直是假的吗?或者是否存在关闭值 true 的有效用例?
protected void Setup(ApiCallerOptions options)
{
Client = CreateHttpClient();
Options = options;
ServicePointManager.FindServicePoint(new Uri(options.BaseAddress))
.ConnectionLeaseTimeout = options.ConnectionLeaseTimeout;
Client.BaseAddress = new Uri(options.BaseAddress);
Client.DefaultRequestHeaders.Accept.Clear();
Client.DefaultRequestHeaders.Accept.Add(options.ContentType);
Client.DefaultRequestHeaders.ConnectionClose = false;
}
RFC https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
14.10 Connection
可用于调试与保持活动的连接相关的问题,或者无论出于何种原因您根本不希望拥有持久连接。当显式设置为真正的 HttpClient 实例时,这些几乎是用例。
要回答你的问题,它应该是假的,否则性能会下降。