如何在异常情况下读取 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();
}
}
}
我们正在使用 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();
}
}
}