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



我有一个dotnet API项目,我已经从2.2升级到5.0。

自从升级以来,当控制器试图用POST模型做某事时,我所有的POST请求都停止工作(获得'对象引用未设置为对象的实例')。

当我在调试模式下运行时,模型为空。

一个API的例子-调试显示,模型是空的,所以模型。enteredDateFrom失败,出现对象引用错误。

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

我有一个没有改变的Angular前端,我已经确认我发送了正确的参数——但它发生在所有的post上。

我甚至不确定如何开始解决这个问题。

如果GetJobsReport方法中的model参数为空,这意味着API不能将从Angular前端发送到JobsReportSearchViewModel对象的JSON对象反序列化。这可能是由于JSON对象和模型之间的不匹配,或者由于JSON序列化/反序列化过程的问题。

这些建议可以解决你的问题:

检查从Angular前端发送的JSON对象是否与JobsReportSearchViewModel模型匹配。您可以使用浏览器开发人员工具来检查网络流量,并检查JSON有效负载是否被正确发送。

检查JSON有效负载是否以正确的内容类型发送。对于json有效负载,应该是application/json。

检查JobsReportSearchViewModel模型是否在c#代码中正确定义。确保所有属性都存在并且具有正确的数据类型。

检查JSON序列化器在你的API项目中是否配置正确。在ASP。. NET 5,默认的JSON序列化器是System.Text.Json。确保它在您的API项目中被正确配置,并且任何自定义序列化设置都被正确应用。

如果您正在使用自定义JSON序列化/反序列化,请确保它正常工作并且不会引起任何问题。

检查API项目中的任何中间件或过滤器没有干扰JSON序列化/反序列化过程。

尝试在控制器中添加[ApiController]属性以启用自动模型验证。

添加状态。IsValid检查你的控制器方法,以确保模型是有效的。

我希望你能按照这些步骤解决你的问题。

相关内容

  • 没有找到相关文章

最新更新