2017-05-11 7 views
0

サードパーティのウェブフックをテストするためのエンドポイントを設定したいと思います。彼らの文書は一様に貧しく、私が何を得ているかを正確に伝えるための時間がありません。私がやったことは、リクエストを受け取り、送信しているものと一緒にテーブルに行を追加するApiControllerをセットアップすることです。これにより、少なくとも、彼らがウェブフックを呼び出していることを確認し、データを見て私がそれをプログラムできるようになります。モデルバインディングを無効にして、raw要求本体をdotnetコアのアクションで使用できますか?

// ANY api/webook/* 
[Route("{*path}")] 
public ActionResult Any(string path) 
{ 
    string method = Request.Method; 
    string name = "path"; 
    string apiUrl = Request.Path; 
    string apiQuery = Request.QueryString.ToString(); 
    string apiHeaders = JsonConvert.SerializeObject(Request.Headers); 
    string apiBody = null; 
    using (StreamReader reader = new StreamReader(Request.Body)) 
    { 
     apiBody = reader.ReadToEnd(); 
    } 
    Add(method, name, apiUrl, apiQuery, apiHeaders, apiBody); 
    return new JsonResult(new { }, JsonSettings.Default); 
} 

これは私がフォームデータとしてポストので、いくつかのミドルウェアが身体を読んでいるusignをしています。この新しいウェブフックを除いて、素晴らしい作品と、それは私のコードではnullを終わります。要求の本文を取得できるように、モデル処理を無効にする方法はありますか?

答えて

0

FromBody属性を使用すると、実際にモデルバインディングを使用してストリームの読み込みをすべてスキップすることができます。試してみてください:

[Route("{*path}")] 
[HttpPost] 
public ActionResult Any(string path, [FromBody] string apiBody)