Visual StudioからASP.NET Web APIでリクエスト本文を表示するにはどうすればよいですか? ASP.NET MVCでは、QuickWatchを使用してRequest
オブジェクトを検査し、本文のコンテンツと投稿されたフォームデータを表示できます。私が読んだことから、ASP.NET Web APIでは、本文を複数回読むことはできません。
これは、特定の値が正しくバインドされなかった理由を見つけようとするときに、非常に面倒です。トレース/ロギングを設定せずにこれを行う簡単な方法はありますか?
Fiddler
をインストールするのが最も簡単です。次に、回線を介して送信されるすべてを確認し、リクエストペイロードだけでなくHTTPヘッダーも検査します。 JavaScriptからAPIを使用している場合、FireBug、Chrome開発者ツールバー、およびIE開発者ツールは、Webサイトによって行われたすべてのネットワーク要求を表示します。
サーバー上のトラフィックを絶対に検査する必要がある場合、ASP.NETアプリケーション内でWeb APIをホストしている場合、イミディエイトウィンドウに次の行を配置できます。
new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()
body >> Form-dataが必要な場合
Post localhost:53356/api/carparksapi/GetRecod
key = jsonRequestおよび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
私にとって@DarinDimitrovの答えは
エラーCS0246:型または名前空間名 'StreamReader'が見つかりませんでした(usingディレクティブまたはAssembly参照がありませんか?)
名前空間を追加した
new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()
これで時間を節約できることを願っています
ASP.NET Coreの場合、イミディエイトウィンドウでこれを使用します。
new System.IO.StreamReader(Request.Body).ReadToEnd()
私にとって@Matas Vaitkeviciusの答えは与えました
エラーCS1061:「HttpContextBase」には「Current」の定義が含まれておらず、タイプ「HttpContextBase」の最初の引数を受け入れる拡張メソッド「Current」が見つかりません(usingディレクティブまたはAssembly参照がありませんか?)
HttpContext.CurrentをSystem.Web.HttpContext.Currentに置き換えると、それができました
new System.IO.StreamReader(System.Web.HttpContext.Current.Request.InputStream).ReadToEnd()
これで時間を節約できることを願っています
Steamの位置が0の位置にある場合、これらの値はすべて機能します。
HttpContext.Current.Request.InputStream.Position = 0;
var body = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();