You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按照教程创建的C# WebAPI无法接收POST请求

问题:WebAPI POST/PUT请求返回415错误,请求体解析失败

背景

按照微软官方教程创建C# WebAPI,GET请求可正常返回响应,但POST或PUT请求返回415 HTTP错误,请求体解析失败。

Pet模型代码

public class Pet
{
  public long Id { get; set; }
  public string? Name {get; set;}
  public string? Type {get; set;}
  public string? Breed {get; set;}
  public string? Description {get; set;}
  public string? BirthDate {get; set;}
  public string? ImageUrl {get; set;}
  public long? Adopter {get; set;} = null;
  public bool Available {get; set;} = false;
}

控制器POST方法代码

public class PetsController : ControllerBase {
  ...
  
  // POST 请求处理
  [HttpPost]
  public async Task<ActionResult<Pet>> PostPet([FromBody]Pet pet)
  {
      _context.Pet.Add(pet);
      await _context.SaveChangesAsync();

      return CreatedAtAction(nameof(GetPet), new { id = pet.Id }, pet);
  }       

  ...
}

请求与响应截图

  • GET请求结果:GET请求结果
  • POST请求结果:POST请求结果
  • 请求Payload:请求payload

POST请求完整错误响应

{
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "traceId": "00-298784fa1ee54a98afe19a0db7410d23-6cef112f5fc292b1-00",
  "errors":{
    "$":[
          "'-' is invalid within a number, immediately after a sign character ('+' or '-'). Expected a digit ('0'-'9'). Path: $ | LineNumber: 0 | BytePositionInLine: 1."
    ],
    "pet":[
          "The pet field is required."
    ]
  }
}

解决方案

从错误信息可明确问题根源:

  1. JSON格式非法:解析器在JSON开头(第0行第1位)发现非法的'-'字符,导致无法正常解析请求体,进而触发"pet字段必填"的错误。
  2. 可能伴随请求头缺失:若未设置Content-Type: application/json,ASP.NET Core不会使用JSON解析器处理请求体,也会引发类似问题。

修复步骤:

  • 检查请求Payload:确保JSON开头无多余符号(如'-'、空格),结构完全符合JSON规范。正确示例如下:
{
  "name": "旺财",
  "type": "犬类",
  "breed": "中华田园犬",
  "description": "性格温顺亲人",
  "birthDate": "2022-03-15",
  "imageUrl": "https://example.com/dog.jpg",
  "available": true
}

注意:可选字段(如Adopter)可省略或设为null,布尔值直接写true/false无需引号,字段名与模型属性名保持一致(大小写不敏感)。

  • 确认请求头:必须添加Content-Type: application/json,若使用Postman等工具,选择"raw"格式并指定为JSON。

  • 验证发送方式:不要用form-data或x-www-form-urlencoded格式发送,选择原始JSON格式提交请求体。


内容的提问来源于stack exchange,提问作者Dev Yego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:55:28