C# 读取HttpContent的前n个字符

C# 读取HttpContent的前n个字符,c#,http,asp.net-web-api,streaming,message-handlers,C#,Http,Asp.net Web Api,Streaming,Message Handlers,我想在Visual C#Web API程序中记录有关HttpRequestMessage响应的信息。我想使用这样的消息处理程序(继承自DelegatingHandler): protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { // log request.Method &a

我想在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
}
protectedoverride async Task sendaync(HttpRequestMessage请求,CancellationToken CancellationToken)
{
//log request.Method和request.RequestUri
var result=await base.sendaync(请求、取消令牌);
//记录结果的前100个字符
返回结果
}
问题是,
result.Content
有时会很大,所以我想限制它只打印前N个字符(大约50个)

我尝试的是:

  • 使用
    toString()
    并使用
    SubString
    将整个内容复制到字符串中。这正是我想要的,但将巨大的字符串读入内存,然后只使用前几个字符似乎是浪费——我觉得一定有更好的方法
  • 互联网上的各种解决方案读取字符,但将其从流中删除。我需要按原样发送完整的流
检查此问题检查此问题