【发布时间】:2020-03-23 09:01:34
【问题描述】:
我有一个错误记录器,可将错误从 API 控制器写入数据库。它有一些像这样的代码:
string form = string.Empty;
if (request.Method == "POST")
{
using (StreamReader sr = new StreamReader(request.Body))
{
if (request.Body.CanSeek) request.Body.Seek(0, SeekOrigin.Begin);
if (request.Body.CanRead) form = sr.ReadToEndAsync().Result;
form = sr.ReadToEndAsync().Result;
}
}
但是,这无法读取正文,因为它已经被读取,并且 ASP.NET Core 不允许您这样做。见:https://devblogs.microsoft.com/aspnet/re-reading-asp-net-core-request-bodies-with-enablebuffering/
我查看了.EnableBuffering 和.EnableRewind,但HttpRequest 上都不存在这些(至少在 3.0 中不存在。
app.Use(async (context, next) => {
context.Request.EnableRewind();
await next();
});
如何重新阅读请求正文?
【问题讨论】:
标签: c# asp.net asp.net-core