从JQuery对Web API进行POST时出现问题

我有一个带有以下POST方法的web api

public HttpResponseMessage Post([FromBody]string package) 

我有一个使用HttpCLient的控制台应用程序没有问题。 当我尝试通过jQuery进行调用时,我在包变量上得到null

这是我现在的代码:

 $.ajax({ url: 'http://localhost:8081/api/Package/', type: 'POST', data: JSON.stringify(message), contentType: "application/json;charset=utf-8", success: function (data) { alert(data.length); }, error: function (xhr, ajaxOptions, thrownError) { alert('Status: '+xhr.status+', Error Thrown: '+thrownError); } }); 

“message”变量是包含两个属性的复杂模型。

我能做错什么?

我很感激你的帮助……

我能够在这里找到另一篇文章的解决方案: 调用Web Api POST总是从jQuery接收null值 。

我必须通过以下方式修改我的代码:

读取的行: data:JSON.stringify(message),更改为: data:JSON.stringify(’=’+ message),.

我去了API post方法并添加了以下代码行:

package = package.Replace(“=”,“”);

为了删除在JQuerypost上添加的’=’。

将值绑定到发送到服务器的响应可能存在问题

尝试将数据发送为

 $.ajax({ url: 'http://localhost:8081/api/Package/', type: 'POST', data: { package : JSON.stringify(message) } datatype: 'json', success: function (data) { alert(data.length); }, error: function (xhr, ajaxOptions, thrownError) { alert('Status: '+xhr.status+', Error Thrown: '+thrownError); } }); 

我假设你的 JSON.stringify(message) 返回一个字符串值

更新

  public HttpResponseMessage Post([ModelBinder]string package) 

允许包从任何地方绑定而不仅仅是身体为我做了。