web-dev-qa-db-fra.com

Comment afficher le corps de la requête dans l'API Web ASP.NET à partir de Visual Studio?

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?

20
Omar

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()
32
Darin Dimitrov

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
3
Saurin Vala

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

0
Taran

Pour ASP.NET Core, utilisez ceci dans la fenêtre immédiate:

new System.IO.StreamReader(Request.Body).ReadToEnd()
0
gldraphael

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();
0
dampee