Comment afficher le corps de la requête dans l'API Web ASP.NET à partir de Visual Studio? Dans ASP.NET MVC, vous pouvez utiliser QuickWatch pour inspecter l'objet Request
et afficher le contenu du corps ainsi que les données de formulaire publiées. D'après ce que j'ai lu, l'API Web ASP.NET ne vous permet pas de lire le corps plus d'une fois.
Il est très agaçant de tenter de comprendre pourquoi une valeur spécifique n’a pas été liée correctement. Existe-t-il un moyen rapide de procéder sans configurer le traçage/la journalisation?
Le plus facile à installer Fiddler
. Ensuite, vous verrez tout ce qui est envoyé sur le réseau et inspecterez non seulement le contenu de la requête, mais également les en-têtes HTTP. Et si vous utilisez l'API à partir de javascript, des outils tels que FireBug, la barre d'outils de développement Chrome et les outils de développement IE vous montreront toutes les requêtes réseau effectuées par le site Web.
Si vous devez absolument inspecter le trafic sur le serveur, si vous hébergez votre API Web dans une application ASP.NET, vous pouvez insérer la ligne suivante dans votre fenêtre immédiate:
new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()
si vous avez besoin de body >> Form-data
Poste localhost: 53356/api/carparksapi/GetRecod
clé = jsonRequest et valeur = [{"abcd": "zxxx"}]
// API -Controller Method ::
var httpContext = (HttpContextWrapper)Request.Properties["MS_HttpContext"];
var foo = httpContext.Request.Form["jsonRequest"];
return foo; //This is value passed in request
Pour moi @Matas Vaitkevicius réponse a donné
erreur CS1061: 'HttpContextBase' ne contient pas de définition pour Méthode 'Current' et sans extension 'Current' acceptant un premier argument de type 'HttpContextBase' pourrait être trouvé (il vous manque une directive using ou une référence Assembly?)
Remplacer HttpContext.Current par System.Web.HttpContext.Current l'a fait pour moi
new System.IO.StreamReader(System.Web.HttpContext.Current.Request.InputStream).ReadToEnd()
J'espère que cela vous fait gagner du temps
Pour ASP.NET Core, utilisez ceci dans la fenêtre immédiate:
new System.IO.StreamReader(Request.Body).ReadToEnd()
Chacune de ces valeurs pourrait fonctionner si la position du Steam est à la position 0.
HttpContext.Current.Request.InputStream.Position = 0;
var body = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();