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
Vous devez vous connecter pour publier un commentaire.
Peut-être demander des flux déjà atteint à la fin. Essayez de réinitialiser le flux de la position de début: