Angular6 POST请求保持待处理状态

时间:2019-06-27 14:53:32

标签: c# asp.net-web-api angular6 asp.net-core-2.2

您好,我正在尝试将来自angular6的请求发布到asp.net核心Web api,但是很遗憾,该请求从未在服务器上收到,并且始终保持“待处理”状态。

我在服务器上的模型:

public class MainVM
{
        public int ID { get; set; }
        public string Name { get; set; }
        public bool IsActive { get; set; }
        public int DepartmentID { get; set; }
        public IFormFile Logo { get; set; }
        public List<ChildVM> ListChilds { get; set; }

}

public class ChildVM
{
        public string Name { get; set; }
        public int SequenceNo { get; set; }
        public int NoOfPrices { get; set; }
        public IFormFile Image { get; set; }
}

和终点:

[HttpPost]
[Consumes("multipart/form-data")]
public void Post([FromForm]MainVM data)
{
}

我用于从angular发布数据的Angular6服务:

const formData: FormData = new FormData();
    //formData.append('Logo', logo, logo.name);
    formData.append('Name', obj.Name);
    formData.append('ListChilds[0].Name', obj.ListChilds[0].Name);
    formData.append('ListChilds[0].SequenceNo', String(obj.ListChilds[0].SequenceNo));
    formData.append('ListChilds[0].NoOfPrices', String(obj.ListChilds[0].NoOfPrices));



    return this.http.post<MainVM>('http://localhost:60458/api/mycontroller/', formData).pipe(
      map((res) => { console.log('res'); return res; }),
      catchError(this.handleError('lpc', null))
    );

当我在formData中注释掉与ListChilds相关的代码时,请求会在Web api上收到,但该请求不会在使用ListChilds的Web api上收到。

我想我缺少什么。

请指导。

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试一下-

 formData.append('ListChilds', JSON.stringify(obj.ListChilds));

它应该将obj.ListChilds中的所有值填充到ListChilds中。

答案 1 :(得分:0)

最后发现这是Asp.net Core 2.2中的错误,我在这里找到了它:

  

https://github.com/aspnet/AspNetCore/issues/4802

问题是当我们在子模型中使用IFormFile类型时,Asp.net core 2.2程序开始挂起(如上面的链接中所述)。

作为解决方法,我从ChildVM中删除了以下行:

public IFormFile Image { get; set; }

并在MainVM中添加以下行:

public List<IFormFile> ListImage { get; set; }