WebApi obtenir le poste de raw corps à l'intérieur d'un filtre

Je " création d'un journal et j'ai besoin de récupérer le corps de la requête pour enregistrer dans la bd. j'ai créé un filtre avec HttpActionContext.
J'ai essayé de récupérer via filterContext.Demande.Contenu.ReadAsStringAsync().Résultat;
mais il y a toujours me rendre une chaîne vide.

LogFilter.cs

public override void OnActionExecuting(HttpActionContext filterContext)
    {
        try
        {
            Task<string> content = filterContext.Request.Content.ReadAsStringAsync();
            string body = content.Result;

            logModel.RequestLog rl = new logModel.RequestLog();
            rl.IP = ((HttpContextWrapper)filterContext.Request.Properties["MS_HttpContext"]).Request.UserHostAddress;
            rl.Type = filterContext.ControllerContext.RouteData.Values["controller"].ToString().ToUpper();
            rl.URL = filterContext.Request.RequestUri.OriginalString;
            rl.Operation = filterContext.Request.Method.Method;
            rl.RequestDate = DateTime.Now;


            filterContext.ControllerContext.RouteData.Values.Add("reqID", new deviceLog.RequestLog().Add(rl).ID.ToString());
        }
        catch { }
        //return new deviceLog.RequestLog().Add(rl);
        base.OnActionExecuting(filterContext);
    }
  • Vous êtes en train d'enregistrer une demande brute à l'intérieur de votre base de données? Sonne comme une conception discutable de choix.
  • Je suis sauver le corps de la requête, pour être en mesure de tracer quelques erreurs.
  • La façon dont vous utilisez ce filtre? L'affecter sur la méthode d'action?
  • en utilisant comme filtre global, à utiliser dans tous les contrôleurs de mof ma demande
InformationsquelleAutor Robson Gmack | 2015-09-01