C#将Json传递给HTTP Post请求

C#将Json传递给HTTP Post请求,c#,rest,C#,Rest,我试图将Json字符串作为HttpWebRequest的参数与URL一起传递。请求将很好地命中方法,但每次参数都为null。我尝试了很多类似的例子,但都没有成功: 下面是将被序列化并传递的示例对象 Amount amount = new Amount { currencyCode = "EUR", amount = 1234 } string JsonParameters = amount.ToJson(); var result = Methods.ExecuteHttpPos

我试图将Json字符串作为HttpWebRequest的参数与URL一起传递。请求将很好地命中方法,但每次参数都为null。我尝试了很多类似的例子,但都没有成功:

下面是将被序列化并传递的示例对象

Amount amount = new Amount
{
    currencyCode = "EUR",
    amount = 1234
}
string JsonParameters = amount.ToJson();
var result = Methods.ExecuteHttpPostRequestWithJson("http://localhost:51581/Home/Test", JsonParameters);
Json参数正确序列化为

{"currencyCode":"EUR","amount":1234}
下面是我尝试创建的方法。我尝试了多种方法,但每次都是无效的

下面是将调用的方法

public static string ExecuteHttpPostRequestWithJson(string URL, string Json)
    {
        string result = "";
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {;
            streamWriter.Write(Json);
            streamWriter.Flush();
            streamWriter.Close();
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            result = streamReader.ReadToEnd();
        }

        return result;
    }
下面是正确命中的方法,但currencyCode和amount的参数均为null

[HttpPost]
public JsonResult Test(string currencyCode, string amount)
{
    return Json(new
    {
        Test = "It worked"
    });
}

除了注释中建议的内容(定义服务中的amount类以及更新服务的POST方法签名以期望该对象)之外,还可以使用
[FromBody]
属性

阶级

新的POST方法签名

[HttpPost]
public JsonResult Test([FromBody]Amount amount)

您正在用javascript创建一个对象。尝试在c#中创建一个带有currencyCode和amount的类,并将该类的对象用作函数中的参数我已经尝试过了,我得到currencyCode=null和amount=0这就是解决方案!我以前尝试过将其更改为“数量”,但从未更改过[FromBody]。谢谢
[HttpPost]
public JsonResult Test([FromBody]Amount amount)