我想在 Visual C# Web API 程序中记录有关 HttpRequestMessage 响应的信息。我想使用这样的消息处理程序(从 DelegatingHandler 继承):
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
。这正是我想要的,但是将巨大的字符串读入内存然后只使用前几个字符似乎很浪费——我觉得必须有更好的方法。- 来自互联网的各种解决方案,它们读取字符但将它们从流中删除。我需要按原样发回完整的流。