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

ASP.NET Web API注册用户时JSON转System.Nullable`1[System.Int32]失败求助

解决ASP.NET Web API中Pin字段JSON转换400错误的方法

问题根源

你提交的12345678901超出了int类型的取值范围(int最大值为2147483647),所以JSON序列化器无法将其转换为Nullable<int>,导致400请求错误。

具体解决步骤

  • 修改模型字段类型:
    把实体模型中Pin字段的类型从int?改成以下两种类型之一:
    1. long?:如果Pin需要作为数值使用(比如参与计算),long的取值范围更大(最大9223372036854775807),完全能容纳你提交的数值。示例代码:
      public long? Pin { get; set; }
      
    2. string:如果Pin只是作为标识字符串(比如验证码、用户PIN码,不需要数值计算),用字符串类型更稳妥,还能避免数值溢出、前导零丢失等问题。示例代码:
      public string Pin { get; set; }
      
  • 同步Swagger请求格式:修改类型后,Swagger UI的请求示例会自动更新。如果改成long?,直接提交数字即可;如果改成string,记得给Pin值加双引号(比如"12345678901")。
  • 添加输入验证(可选):
    为了确保Pin格式符合要求,可以给字段加验证特性:
    • 若用long?,可加范围验证:[Range(10000000000, 99999999999)](根据你的Pin长度需求调整)
    • 若用string,可加正则验证:[RegularExpression(@"^\d{11}$")](限制为11位数字)
  • 排查序列化配置:如果修改类型后仍有问题,检查项目中Program.cs或Startup.cs里的JsonSerializerOptions配置,确保没有强制将数字转换为int的自定义规则。

内容的提问来源于stack exchange,提问作者Nikusha Gabidzashvili

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:15:00