如何在异常情况下读取 HttpActionExecutedContext 中的 JSON 正文

How to read JSON body in HttpActionExecutedContext in case of exception

我们正在使用 Web API 2,为了处理异常,我们通过继承 ExceptionFilterAttribute 创建了一个自定义属性。现在我们要将 JSON 请求的日志保存到数据库以防异常。

我尝试使用 context.Request.Content.ReadAsStringAsync() 进行读取。结果但它返回空字符串。

请帮忙!!

您可以重置请求流位置并重新读取它:

class CustomExceptionFilterAttribute : ExceptionFilterAttribute
{
    public override async Task OnExceptionAsync(HttpActionExecutedContext context, CancellationToken cancellationToken)
    {
        var stream = await context.Request.Content.ReadAsStreamAsync();
        stream.Position = 0;
        using (var reader = new StreamReader(stream))
        {
            var requestString = reader.ReadToEnd();
        }
    }
}