2013-05-20 5 views
16

Come è possibile visualizzare il corpo della richiesta nell'API Web ASP.NET da Visual Studio? In ASP.NET MVC, è possibile utilizzare QuickWatch per ispezionare l'oggetto Request e visualizzare il contenuto del corpo e tutti i dati dei moduli pubblicati. Da quanto ho letto, l'API Web ASP.NET non consente di leggere il corpo più di una volta.Come posso visualizzare il corpo della richiesta nell'API Web ASP.NET da Visual Studio?

Questo è molto fastidioso da affrontare quando si cerca di capire perché un valore specifico non è stato associato correttamente. C'è un modo rapido per farlo senza impostare traccia/registrazione?

+0

Firebug non vi aiuterà a realizzare quello che vuoi? Sta guardando il traffico HTTP effettivo dal browser, che VS non può davvero fare. – DOK

+1

La richiesta API proviene da una fonte esterna a cui non ho accesso. – Omar

risposta

29

Il più semplice da installare Fiddler. Quindi vedrai tutto ciò che viene inviato sul filo e ispezioni non solo il carico utile della richiesta ma anche le intestazioni HTTP. E se stai utilizzando l'API da javascript, cose come FireBug, Chrome Developer Toolbar e IE Developer Tools ti mostreranno tutte le richieste di rete fatte dal sito web.

Se è assolutamente necessario ispezionare il traffico sul server quindi se si ospitano il Web API all'interno di un'applicazione ASP.NET si potrebbe mettere la seguente riga nella finestra immediata:

new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd() 
+8

o si potrebbe anche fare 'request.Content.ReadAsStringAsync(). Result' too.Questo bufferizzerebbe il contenuto della richiesta e il resto della pipeline funzionerebbe come previsto, ma se si utilizza StreamReader per leggere lo stream fino alla fine, è necessario assicurarsi di reimpostare la posizione in modo che il resto della pipeline funzioni. Tuttavia, come hai detto "Fiddler" sarebbe la mia prima scelta. –

3

se avete bisogno corpo >> form-data

Messaggio localhost: 53356/api/carparksapi/GetRecod

key = jsonRequest e value = [{ "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 
1

Per me @DarinDimitrov risposta ha dato

errore CS0246: Il tipo o dello spazio dei nomi il nome 'StreamReader' non è stato trovato (le manca un un riferimento all'assembly direttiva using o ?)

Aggiunta namespace fatto

new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()

Spero che questo ti consente di risparmiare tempo

0

Per me @Matas Vaitkevicius risposta ha dato

errore CS1061: 'HttpContextBase' non contiene una definizione per 'corrente' e nessun metodo di estensione 'Corrente' l'accettazione di un primo argomento di tipo 'HttpContextBase' stato trovato (che le manca una direttiva using o un riferimento all'assembly?)

Repl acing HttpContext.Current con System.Web.HttpContext.Current ha fatto per me

new System.IO.StreamReader(System.Web.HttpContext.Current.Request.InputStream).ReadToEnd() 

Spero che questo ti consente di risparmiare tempo

Problemi correlati