HttpResponseMessage 你处理了吗?
HttpResponseMessage do you dispose it?
在等待新闪亮 HttpClientFactory
解决 HttpClient
、
的所有问题的同时
HttpResponseMessage
和 HttpRequestMessage
是否应该被处置,我仍然找不到答案。
像下面这样的做法是好的吗?
您是否将 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。如果在该包装器的构造函数之外使用响应消息,则可能已经处理了响应。
在等待新闪亮 HttpClientFactory
解决 HttpClient
、
HttpResponseMessage
和 HttpRequestMessage
是否应该被处置,我仍然找不到答案。
像下面这样的做法是好的吗?
您是否将 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。如果在该包装器的构造函数之外使用响应消息,则可能已经处理了响应。