2017-09-14 1 views
0

ASP.NETサーバーでポストボディを取得しようとしていますが、ボディを受け取っていません。ポストボディを正しく取得する方法C#

これは私のコントローラ

[HttpPost] 
public Boolean ReleaseProtection([FromBody]string value) 
{ 
    System.Diagnostics.Debug.WriteLine("returning value"); 
    System.Diagnostics.Debug.WriteLine(value); 
    return true; 
} 

である私はnodeJSサーバにpostに同じ方法を使用する場合はこれが私のクライアントのC#スクリプト

var credentials = new Dictionary<string, string>() 
{ 
    {"token", Token.Value}, 
    {"repoId", repoId} 
}; 

var content = new FormUrlEncodedContent(credentials); 
var response = await client.PostAsync(Ribbon1.DOTNETHOSTURL + "api/excel/ReleaseProtection", content); 
var responseString = await response.Content.ReadAsStringAsync(); 

あり、それはメッセージの罰金が、[FormBody] string value戻り、空の文字列を受け取ります。どうしてこれなの?ここで

答えて

1

は、POSTで[FromBody]の使用方法についてかなりの深さで答えます:Sending HTML Form Data

ショートバージョンは、あなたが生string valueを持ってしたくないということです。

あなたは

public class MyCredentials 
{ 
    public string Token { get; set; } 
    public string RepoId { get; set; } 
} 

のような単純なクラスを作成する必要があります。そして、あなたはこの

[HttpPost] 
public Boolean ReleaseProtection([FromBody]MyCredentials creds) 
{ 
    // Do stuff... 
} 
ようにそれを読むことができます
関連する問題