C# 如何发布到asp.net核心web api控制器并获取具有值的参数

C# 如何发布到asp.net核心web api控制器并获取具有值的参数,c#,rest,asp.net-core-webapi,C#,Rest,Asp.net Core Webapi,我正在努力让我的自托管asp.net web api服务器获得一个在控制器上发布的调用 $.ajax({ url: mySelfHostedAspWebApi, //i.e. http://1.2.3.4:1234/ type: "POST", data: cmd, contentType: 'application/json', success: (function(scanCmd) { }), //success: (function (sca

我正在努力让我的自托管asp.net web api服务器获得一个在控制器上发布的调用

$.ajax({
    url: mySelfHostedAspWebApi, //i.e. http://1.2.3.4:1234/
    type: "POST",
    data: cmd,
    contentType: 'application/json',
    success: (function(scanCmd) {

   }), //success: (function (scanCmd){
});// $.ajax({
C#中的asp.net核心控制器非常简单

  ...
  [Route( "" )]
  [HttpPost]
  public HttpResponseMessage Post(Command cmd)
  {
     ASSERT(null,cmd); // <=== problem here !!!
     if(cmd=="go") Go(";-)");
     ...
。。。
[路线(“”)
[HttpPost]
公共httpresponsemessagepost(命令cmd)
{

ASSERT(null,cmd);//我认为您缺少
FromBody
参数声明,用于
cmd
参数,如下所示:

[Route( "" )]
[HttpPost]
public HttpResponseMessage Post([FromBody] Command cmd) // <<- tweak here
{
    ASSERT(null,cmd); // <=== no problem here :-)
    if(cmd=="go") Go(";-)");
    ...
[路线(“”)]
[HttpPost]

public HttpResponseMessage Post([FromBody]Command cmd)/问题在于在ajax调用中使用contentType:'application/json'。
-我删除了它,并获得了数据。

只是检查一下,为什么不使用
FromBody
属性声明
cmd
参数,如下所示:
public-httpresponsemessagepost([FromBody]Command-cmd)
?的可能重复。我进一步调试了一下,发现问题是由ajax调用中的contentType:“application/json”引起的。。