1

我想在 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。这正是我想要的,但是将巨大的字符串读入内存然后只使用前几个字符似乎很浪费——我觉得必须有更好的方法。
  • 来自互联网的各种解决方案,它们读取字符但将它们从流中删除。我需要按原样发回完整的流。
4

0 回答 0