Web API ActionFilter изменяет возвращаемое значение

У меня есть приложение веб-API, которое мне нужно для получения возвращаемого значения некоторых конечных точек API с помощью метода OnActionExecuted ActionFilter.

Я использую настраиваемый атрибут для определения конечных точек с данными, которые мне нужно изменить, но я не могу найти фактический объект результата в HttpActionExecutedContext.

Спасибо за любую помощь!


person joe_coolish    schedule 06.10.2012    source источник


Ответы (1)


Вы можете получить возвращаемое значение через свойство Response.Content. Если ваше действие вернуло объект, вы можете привести его к ObjectContent, откуда вы можете получить фактический экземпляр возвращаемого значения:

public class MyFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(HttpActionExecutedContext context)
    {
        var objectContent = context.Response.Content as ObjectContent;
        if (objectContent != null)
        {
            var type = objectContent.ObjectType; //type of the returned object
            var value = objectContent.Value; //holding the returned value
        }
    }
}
person nemesv    schedule 06.10.2012
comment
Спасибо за ответ. Тип context.Response.ContentSystem.Net.Http.ObjectContent<System.Collections.Generic.IEnumerable<Model.ViewModels.UserAction>>. Я просто хочу часть System.Collections.Generic.IEnumerable<Model.ViewModels.UserAction>. Как мне это получить? - person joe_coolish; 06.10.2012
comment
ObjectContent<T> является производным от ObjectContent, поэтому просто приведите context.Response.Content к ObjectContent, затем вы можете использовать свойство to Value для приведения к вашему IEnumerable<Model.ViewModels.UserAction>... - person nemesv; 06.10.2012
comment
Это сделало работу для меня. Спасибо - person Stanley Okpala Nwosa; 20.07.2018