我将解决方案从.net core 2.2升级到3.0,并且我想以“适当”的方式记录请求数据/正文。我读到很多东西,比起直接从流中读取,更喜欢使用PipeReader。
.net core 3.0之前的版本,我们使用了流和EnableRewind()方法。看起来像这样:
$
我想了解如何正确使用PipeReader。例如。要在HttpRequest主体中读取为字符串,需要什么代码?我看到有一个ReadAsync()和TryRead()方法,但是我不确定如何正确使用它们。我还看到有一个AsStream()方法,可以像以前一样在流上使用它(但不倒带)。
我很乐意看到任何有关如何执行此操作的示例,因为使用管道似乎需要大量的指针引用。最后,如果我使用PipeReader.AsStream(),是否需要担心倒带?
答案 0 :(得分:1)
这是我的操作方式:
HttpRequest.EnableBuffering();
using var streamReader = new StreamReader(HttpRequest.Body);
string data = await streamReader.ReadToEndAsync();
EnableBuffering()
替换了EnableRewind()
。