HttpResponseMessage 你处理了吗?

HttpResponseMessage do you dispose it?

在等待新闪亮 HttpClientFactory 解决 HttpClient

的所有问题的同时

HttpResponseMessageHttpRequestMessage 是否应该被处置,我仍然找不到答案。

像下面这样的做法是好的吗?

您是否将 Using 语句与 HttpResponseMessage 一起使用?

//httpClient has been injected

using (HttpResponseMessage messageResponse = await httpClient.GetAsync(uri, cancellationToken).ConfigureAwait(false))
{
    using (HttpContent content = messageResponse.Content)
    {
        if (messageResponse.IsSuccessStatusCode)
        {
            var json  = await content.ReadAsStringAsync();
            var response = await Task.Run(() => JsonConvert.DeserializeObject<TResponse>(json, serializerSettings));

            return new MyWrapperResponse<TResponse>(messageResponse,response);
        }
    }
}

Do you use a Using statement with HttpResponseMessage?

简答:可以。

Is something like below a good practice?

视情况而定。

虽然通常建议将 IDisposable 派生的 classes 与 using 包装起来以便正确处理,但所示示例可能使用不正确。

messageResponse 被注入包装器 class (MyWrapperResponse),然后是函数 returns。如果在该包装器的构造函数之外使用响应消息,则可能已经处理了响应。