HttpResponseMessage вы располагаете? - PullRequest
0 голосов
/ 30 мая 2018

В ожидании нового блестящего 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);
        }
    }
}

1 Ответ

0 голосов
/ 30 мая 2018

Используете ли вы оператор Using с HttpResponseMessage?

Краткий ответ: Да, вы можете.

Что-то вроде нижеприведенной практики?

Это зависит.

Хотя обычно рекомендуется обернуть IDisposable производные классы с using для правильного удаления, показанный пример может использовать его неправильно.

messageResponse внедряется в класс-оболочку (MyWrapperResponse), а затем функция возвращается сразу после.Если ответное сообщение используется за пределами конструктора этой оболочки, возможно, ответ уже был бы удален.

...