角度 http post 错误 415 .net 核心 web api

Posted

技术标签:

【中文标题】角度 http post 错误 415 .net 核心 web api【英文标题】:angular http post error 415 .net core web api 【发布时间】:2021-04-27 15:03:21 【问题描述】:

您好,我需要一些关于发布到 .net core web api 的帮助。我是 Angular 新手。

我试图在 https://localhost:44394/api/SyUsers 上发布请求 但我得到 415 错误我试图设置 常量头 = 新的 HttpHeaders(); headers.set('Content-Type', 'application/json');

这里是post方法:

  addPost(
    authType: string,    
    userId: string,
    userCreateDate: any,
    username: string,
    firstName: string,
    middleName: string,
    lastName: string,
    email: string,
    position: string,
    section: string,
    department: string,
    alias01: string,
    alias02: string,
    alias03: string,
    alias04: string,
    userModifiedDate: any
    ) 
    const userData = new FormData();
    userData.append('authType', authType);
    userData.append('userId', userId);
    userData.append('userCreateDate', userCreateDate);
    userData.append('username', username);
    userData.append('Hash', localStorage.getItem('userId').toString());
    userData.append('firstName', firstName);
    userData.append('middleName', middleName);
    userData.append('lastName', lastName);
    userData.append('email', email);
    userData.append('position', position);
    userData.append('section', section);
    userData.append('department', department);
    userData.append('alias01', alias01);
    userData.append('alias02', alias02);
    userData.append('alias03', alias03);
    userData.append('alias04', alias04);
    userData.append('userPermissions', 'sa');
    userData.append('userGroup', 'sa');
    userData.append('userModifiedDate', userModifiedDate);
    userData.append('userModifiedBy', localStorage.getItem('username').toString());
    userData.append('userCreatedBy', localStorage.getItem('username'));
    
    this.http
    .post<message: string, user: Users>(
      BACKEND_URL, 
      JSON.stringify(userData),
      headers: headers
    )
    .subscribe((responseData) => 
      this.router.navigate(['user-list']);
    );
    console.log(userData)
  

这是来自 .net core 的代码

[HttpPost]
public async Task<ActionResult<SyUsers>> PostSyUsers([FromBody]  SyUsers userData)

    _context.SyUsers.Add(userData);
    await _context.SaveChangesAsync();

    return CreatedAtAction("GetSyUsers", new  id = userData.Id , userData);

在邮递员上它正在工作:

【问题讨论】:

你能分享你的邮递员请求正文吗? 使用纯 javascript 对象而不是“FormData()”: const userData = authType: authType ... 【参考方案1】:

在postman中,你将数据封装在body中,bakend是[FromBody],所以可以正常运行。但是在angular中,你使用FormData,接收类型不同。

[FromBody]更改为[FromForm],并删除角度中的JSON.stringify

this.http
.post<message: string, user: Users>(
  BACKEND_URL, 

  userData,
  headers: headers
)
.subscribe((responseData) => 
  this.router.navigate(['user-list']);
);

【讨论】:

@Christian Lacuesta,你能接受这个答案吗? 是的,非常感谢 karney,这是很大的帮助。

以上是关于角度 http post 错误 415 .net 核心 web api的主要内容,如果未能解决你的问题,请参考以下文章

来自 Axios 405 或 415 错误的 Vue.js 和 .NET WEBAPI2 POST

使用 POST 方法时的 HTTP 错误

使用 Jax-RS 发布 HTTP 错误代码 415?

POST 到 Jersey REST 服务收到错误 415 Unsupported Media Type

asp.net core 2.2 发布文件导致 http/415 不支持的媒体类型

使用 CORS 在 IIS 上运行的 Angular 2 和 .net 核心 Web 应用程序之间的 HTTP 415 OPTIONS 请求