获取HttpActionExecutedContext结果值

gdp*_*gdp 10 action-filter asp.net-web-api

我创建了一个过滤器,它继承了asp.net web api中的System.Web.Http.Filters.ActionFilterAttribute,并希望访问HttpActionExecutedContext结果对象中的一些数据.

在什么阶段/什么时候这个对象被填充?当我重写OnActionExecuted方法时它看着它并且它总是为空?

有任何想法吗?

编辑:

例如,在我的自定义过滤器中:

public override OnActionExecuted(HttpActionExecutedContext context)
{
    //context.Result.Content is always null

    base.OnActionExecuted(context);
}
Run Code Online (Sandbox Code Playgroud)

gdp*_*gdp 7

在内容结果上使用ReadAsStringAsync结束.在实际请求完成之前,我试图访问该属性.


vir*_*der 6

使用此函数在web api中获取请求体

private string GetBodyFromRequest(HttpActionExecutedContext context)
{
    string data;
    using (var stream = context.Request.Content.ReadAsStreamAsync().Result)
    {
        if (stream.CanSeek)
        {
            stream.Position = 0;
        }
        data = context.Request.Content.ReadAsStringAsync().Result;
    }
    return data;
}
Run Code Online (Sandbox Code Playgroud)