2012-10-06 20 views
20

regresado Tengo una aplicación Web API que tengo que ponerme en contacto con el valor de retorno de algunos de los puntos finales de API a través del método OnActionExecuted de un ActionFilterWeb API ActionFilter Modificar el valor de

estoy usando un atributo personalizado para identificar el puntos finales que tienen datos que necesito modificar, pero parece que no puedo encontrar el objeto resultante real dentro del HttpActionExecutedContext.

¡Gracias por cualquier ayuda!

Respuesta

37

Puede obtener el valor devuelto a través de la propiedad Response.Content. Si su acción se ha vuelto un objeto que puede echarlo a ObjectContent desde donde se puede obtener la instancia real del valor devuelto:

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 
     } 
    } 
} 
+0

Gracias por la respuesta. El tipo de 'context.Response.Content' es' System.Net.Http.ObjectContent > '. Solo quiero la parte 'System.Collections.Generic.IEnumerable '. ¿Cómo lo consigo? –

+0

'ObjectContent ' se deriva de la forma 'ObjectContent' así que simplemente convierte' context.Response.Content' a 'ObjectContent' entonces puedes usar la propiedad' Value' para convertirlo a 'IEnumerable ' .. . – nemesv

Cuestiones relacionadas