Si bien la respuesta otorgada se refería a ReadAsStringAsync, la respuesta no tenía ningún ejemplo. Seguí el consejo de gdp y obtuve un ejemplo algo funcional ...
Creé una única clase llamada MessageInterceptor. No hice más que derivar de ActionFilterAttribute e inmediatamente comenzó a interceptar las llamadas al método webAPI antes de que el controlador lo obtuviera, y después de que el controlador terminara. Aquí está mi clase final. Este ejemplo usa el Serializador XML para obtener tanto la solicitud como la respuesta en una cadena XML. Este ejemplo encuentra la solicitud y la respuesta como objetos poblados, esto significa que la deserialización ya se ha producido. La recopilación de datos de un modelo poblado y la serialización en una cadena XML es una representación de la solicitud y la respuesta, no de la solicitud y respuesta posteriores reales enviadas por IIS.
ejemplo de código - MessageInterceptor
using System.IO;
using System.Linq;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
using System.Xml.Serialization;
namespace webapi_test
{
public class MessageInterceptor : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
base.OnActionExecuting(actionContext);
var headers = actionContext.Request.Content.Headers.ToString();
var request = actionContext.ActionArguments.FirstOrDefault().Value;
var xml = SerializeXMLSerializer(request, "");
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base.OnActionExecuted(actionExecutedContext);
var headers = actionExecutedContext.Response.Content.Headers.ToString();
var response = actionExecutedContext.Response.Content.ReadAsStringAsync().Result;
var xml = SerializeXMLSerializer(response, "");
}
public static string SerializeXMLSerializer(object o, string nameSpace)
{
string serializedValue;
var writer = new StringWriter();
XmlSerializer serializer = new XmlSerializer(o.GetType(), nameSpace);
serializer.Serialize(writer, o);
serializedValue = writer.ToString();
return serializedValue;
}
}
}
Compartir algunos código. ¿Estás utilizando versión beta o versión de código fuente? Esto funciona para mi. – Aliostad
@Aliostad Hola, estoy usando la versión beta. ¿Que estas usando? – gdp
Estoy usando la misma versión beta. – Aliostad