Asp.net 核心Web API POST在升级后无法在5.0上工作

kninwzqo  于 2023-04-07  发布在  .NET
关注(0)|答案(1)|浏览(98)

我有一个dotnet API项目,我已经从2.2升级到5.0。
自从升级以来,当控制器试图对POST模型做一些事情时,我所有的POST请求都停止了工作(得到“Object reference not set to an instance of an object”)。
当我在Debug模式下运行时,模型为null。
一个API示例-调试显示model为null,因此model.enteredDateFrom失败,并出现对象引用错误。

[HttpPost]
    [Route("GetJobsReport")]
    public async Task<IActionResult> GetJobsReport([FromBody] JobsReportSearchViewModel model)
    {
        if (model.enteredDateFrom != null)

我有一个Angular 前端没有改变,我已经确认我发送正确的参数-但它发生在所有职位。
我甚至不知道如何开始解决这个问题。

7gcisfzg

7gcisfzg1#

如果GetJobsReport方法中的model参数为null,则意味着API无法将从Angular前端发送的JSON对象反序列化为JobsReportSearchViewModel对象。这可能是由于JSON对象和模型之间不匹配,或者由于JSON序列化/反序列化过程存在问题。
这些建议可以解决您的问题:
检查从Angular前端发送的JSON对象是否匹配JobsReportSearchViewModel模型。您可以使用浏览器开发人员工具检查网络流量并检查JSON有效负载是否正确发送。
检查JSON payload是否使用正确的内容类型发送。对于JSON payload,它应该是application/json。
检查JobsReportSearchViewModel模型是否在C#代码中正确定义。确保所有属性都存在并且具有正确的数据类型。
检查API项目中是否正确配置了JSON序列化程序。在ASP.NET 5中,默认JSON序列化程序为System.Text.JSON。请确保在API项目中正确配置了它,并且正确应用了任何自定义序列化设置。
如果您使用的是自定义JSON序列化/反序列化,请确保它正常工作,并且不会导致任何问题。
检查API项目中的任何中间件或过滤器是否不会干扰JSON序列化/反序列化过程。
尝试将[ApiController]属性添加到控制器以启用自动模型验证。
向控制器方法添加ModelState.IsValid检查,以确保模型有效。
我希望你能通过以下步骤解决你的问题。

相关问题