У меня есть служба, которая использует API REST SMS с использованием HttpClient
:
HttpClient http = this._httpClientFactory.CreateClient();
// Skipped: setup HttpRequestMessage
using (HttpResponseMessage response = await http.SendAsync(request))
{
try
{
_ = response.EnsureSuccessStatusCode();
}
catch (HttpRequestException)
{
string responseString = await response.Content.ReadAsStringAsync(); // Fails with ObjectDisposedException
this._logger.LogInformation(
"Received invalid HTTP response status '{0}' from SMS API. Response content was {1}.",
(int)response.StatusCode,
responseString
);
throw;
}
}
API возвращает ошибку, но я хотел бы иметь возможность ее регистрировать. Поэтому мне нужно зарегистрировать как код ошибки (который я могу прочитать из response.StatusCode
), так и связанный контент (который может содержать дополнительные полезные сведения об ошибках).
Этот код не выполняется в инструкции await response.Content.ReadAsStringAsync()
с это исключение:
System.ObjectDisposedException: невозможно получить доступ к удаленному объекту.
Имя объекта: 'System. Net .Http.HttpConnection + HttpConnectionResponseContent'.
Модуль "System. Net .Http.HttpContent ", в CheckDisposed
Модуль" Система. Net .Http.HttpContent ", в ReadAsStringAsyn c
Некоторые источники предполагают, что вы не должны читать содержание ответа, когда код состояния не находится в диапазоне успеха (200-299), но что, если ответ действительно содержит полезные сведения об ошибке?
. NET используемая версия:. NET Core 2.1.12 AWS лямбда linux время выполнения.