在等待新的 Shiny HttpClientFactory
解决HttpClient
的所有问题时,
我仍然找不到答案是否应该丢弃HttpResponseMessage
和HttpRequestMessage
。
下面是一种好的做法吗?
您是否在HttpResponseMessage
中使用了Using语句?
//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);
}
}
}
最佳答案
简短的回答:是的,您可以。
这取决于。
虽然通常建议做法是将IDisposable
派生的类与using
包裹在一起以进行适当处理,但所示示例可能使用不正确。
将该messageResponse
注入(inject)包装类(MyWrapperResponse
),然后此函数立即返回。如果响应消息是在包装器的构造函数之外使用的,则响应可能已经被释放。
关于c# - 您处理HttpResponseMessage吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50599377/