Я хочу записать информацию об ответах HttpRequestMessage в программе Visual C# Web API. Я хочу использовать обработчик сообщений (унаследованный от DelegatingHandler), как это:Прочитать первые n символов HttpContent
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// log request.Method & request.RequestUri
var result = await base.SendAsync(request, cancellationToken);
// log first 100 chars of result.Content
return result
}
Вопрос заключается в том, что result.Content
иногда быть огромным, поэтому я хочу, чтобы ограничить его только печать первых символов N (примерно 50).
Что я пробовал:
- Копирование целиком в строку с
toString()
и использованиемSubString
. Это делает именно то, что я хочу, но кажется расточительным читать огромные строки в памяти, а затем использовать только первые несколько символов - я чувствую, что должен быть лучший способ. - Различные решения со всего Интернета, которые читают символы, но удаляют их из потока. Мне нужно отправить полный поток обратно, как есть.