如何在 .net core 3.0 中读取正文内容?



我正在将我的解决方案从 .net core 2.2 升级到 3.0,我想以"正确"的方式记录请求数据/正文。我读了很多,使用 PipeReader 比直接从流中读取更可取。

在 .net core 3.0 之前,我们使用流和 EnableRewind(( 方法。它看起来像这样:

HttpRequest.EnableRewind();
HttpRequest.Body.Position = 0;
var sr = new StreamReader(HttpRequest.Body);
var myData = sr.ReadToEnd();
HttpRequest.Body.Position = 0;
return myData;

我想了解如何正确使用PipeReader。例如。在 HttpRequest 正文中读取到字符串中需要什么代码?我看到有一个 ReadAsync(( 和 TryRead(( 方法,但我不确定如何正确使用这些方法。我还看到有一个 AsStream(( 方法,我已经能够像以前一样在流上使用它(但没有倒带(。

我很想看到有关如何执行此操作的任何示例,因为似乎使用管道需要大量的指针引用。最后,如果我使用 PipeReader.AsStream((,我需要担心倒带吗?

这是我的做法:

HttpRequest.EnableBuffering();
using var streamReader = new StreamReader(HttpRequest.Body);
string data = await streamReader.ReadToEndAsync();

EnableBuffering()取代了EnableRewind().

最新更新