El contenido del filtro de acciones de la API web no se puede leer

Pregunta relacionada:El parámetro de acción de la API web es intermitentemente nulo yhttp://social.msdn.microsoft.com/Forums/vstudio/en-US/25753b53-95b3-4252-b034-7e086341ad20/web-api-action-parameter-is-intermittently-null

¡Hola!

Estoy creando un ActionFilterAttribute en ASP.Net MVC WebAPI 4 para poder aplicar el atributo en los métodos de acción en el controlador que necesitamos validar un token antes de ejecutarlo como el siguiente código:

public class TokenValidationAttribute : ActionFilterAttribute
{
        public override void OnActionExecuting(HttpActionContext filterContext)
        {
        //Tried this way
        var result = string.Empty;
        filterContext.Request.Content.ReadAsStringAsync().ContinueWith((r)=> content = r.Result);

        //And this
        var result = filterContext.Request.Content.ReadAsStringAsync().Result;

        //And this
        var bytes = await request.Content.ReadAsByteArrayAsync().Result;
        var str = System.Text.Encoding.UTF8.GetString(bytes);

        //omit the other code that use this string below here for simplicity
    }
}

Estoy tratando de leer el contenido como una cadena. Probé las 3 formas como se indica en este código, y todas regresan vacías. Sé que en WebApi solo puedo leer una vez el contenido del cuerpo de la solicitud, por lo que estoy comentando todo lo demás en el código y tratando de ejecutarlo para ver si obtengo un resultado. El punto es, el cliente e incluso el Fiddler, informa el 315 de la longitud del contenido de la solicitud. El mismo tamaño también se está poniendo en el encabezado de contenido del servidor, pero cuando intentamos leer el contenido, está vacío.

Si elimino el atributo y hago la misma solicitud, el controlador se considera correcto y la deserialización de Json es impecable. Si pongo el atributo, todo lo que obtengo es una cadena vacía del contenido. Sucede SIEMPRE. No intermitente como lo indican las preguntas relacionadas.

¿Qué estoy haciendo mal? Tenga en cuenta que estoy usando ActionFilter en lugar de DelegatingHandler porque solo las acciones seleccionadas requieren la validación del token antes de la ejecución.

¡Gracias por la ayuda! Realmente lo aprecio.

Saludos...

Gutemberg

Respuestas a la pregunta(1)

Su respuesta a la pregunta