Angular 2 POST不会将数据发送到ASP.NET服务器

时间:2017-08-23 11:16:35

标签: asp.net angular

我想使用POST方法将数据从客户端发送到ASP.NET MVC服务器。调用了Web api操作,但数据尚未发送到服务器。当我打开Fiddler时,我看到了数据。 这是我的代码:

客户

let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
this.http.post('http://localhost/app/api/Users/', 'hello', { headers: headers, withCredentials: true })
  .subscribe(user => {
    console.log(user);
  });

服务器

   [HttpPost]
   public void Post([FromBody]string data)
   {
      //data is null
   }

问题出在哪里?感谢您的任何建议。

3 个答案:

答案 0 :(得分:0)

该值不是表单编码,而是您在content-type标头中指定的值。将值更改为:

'=hello'

完整的电话

this.http.post('http://localhost/app/api/Users/', '=hello', { headers: headers, withCredentials: true })
  .subscribe(user => {
    console.log(user);
  });

答案 1 :(得分:0)

使用application / x-www-form-urlencoded时,你必须使用formdata:

let data = new FormData();
data.append('data': 'hello');

答案 2 :(得分:0)

如果您没有指定正确的内容类型并且提供有关已接收正文与变量名称之间匹配的线索,则ASP.NET不会对正文进行反序列化。

一种可能性是将主体序列化为JSON,并使用匹配的变量名称,如:

    let model = { data: "Hello" }
    let req = new Headers();
    req.headers.append('content-type', 'application/json');

    let body = JSON.stringify(model);

    this.http.post(url, body, req).subscribe(...)