【发布时间】:2020-08-27 17:34:29
【问题描述】:
目前我正在使用以下 post 方法,它返回错误 500 内部服务器错误。 System.NullReferenceException:对象引用未设置为对象的实例。在 WebApi.Controllers.OrderController.PostOrder(Order order)
public async Task<ActionResult<Order>> PostOrder(Order order)
{
// order table
_context.OrderRequests.Add(order);
// orderitem table
foreach (var item in order.OrderItems)
{
_context.OrderItems.Add(item);
}
await _context.SaveChangesAsync();
return CreatedAtAction("GetOrder", new { id = order.OrderID}, order);
}
怎么了?如何在两个表上提交 POST?还是我必须为 OrderItems 创建一个单独的 Web api 控制器?
System.NullReferenceException:对象引用未设置为对象的实例。 在 C:\dev\Test\WebApi\Controllers\OrderController.cs:line 91 中的 WebApi.Controllers.OrderController.PostOrder(Order order) 在 lambda_method(闭包,对象) 在 Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult() 在 Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper 映射器,ObjectMethodExecutor 执行器,对象控制器,对象 [] 参数) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker 调用程序,ValueTask`1 actionResultValueTask) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker 调用程序,任务 lastTask,下一个状态,作用域范围,对象状态,布尔 isCompleted) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed 上下文) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(状态&下一个,范围&范围,对象&状态,布尔& isCompleted) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker 调用程序,任务 lastTask,下一个状态,作用域范围,对象状态,布尔 isCompleted) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker 调用程序,任务任务,IDisposable 范围) 在 Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(端点端点,任务 requestTask,ILogger 记录器) 在 Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext 上下文) 在 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext 上下文)
【问题讨论】:
-
您无需为嵌套项创建单独的 API 控制器。我尝试使用像您这样的嵌套结构来复制场景(父类具有 List
类作为其成员之一)并且可以成功发布数据。模型绑定似乎没有任何问题。 500可能是因为服务器端问题。查看异常的堆栈跟踪可以提供更多信息。 -
我添加了整个异常细节。我在前端使用角度。你认为问题会在那里吗?还是在 asp.net core web api 上?
标签: json asp.net-core entity-framework-core asp.net-core-webapi