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

C# 异常情况下如何在HttpActionExecutedContext中读取JSON正文,c#,asp.net-web-api2,httpcontext,C#,Asp.net Web Api2,Httpcontext,我们使用的是WebAPI2,为了处理异常,我们通过继承ExceptionFilterAttribute创建了一个自定义属性。现在我们要将JSON请求的日志保存到数据库中,以防出现异常 我试图使用context.Request.Content.ReadAsStringAsync().Result读取,但返回空字符串 请帮忙 您可以重置请求流位置并重新读取它: class CustomExceptionFilterAttribute : ExceptionFilterAttribute {

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

我试图使用context.Request.Content.ReadAsStringAsync().Result读取,但返回空字符串


请帮忙

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

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();
        }
    }
}

感谢您回答我的问题并提供解决方案,但当我使用OneException方法时,为什么我无法阅读请求正文。请给出建议。因为请求流已经被框架解析和读取。您可以使用与我相同的技巧,从开始搜索流。