当向 Asp.Net Core Web Api(版本 3.1)发送 POST 请求时,我从 POSTMAN 获得状态 500 代码

I am getting Status 500 code from POSTMAN when sending POST request to Asp.Net Core Web Api (version 3.1)

我在 POSTMAN 和 Asp.Net 核心 Web Api.

之间进行 Web api 测试

Web 应用程序很可能仅在可以从 URL 进行模型绑定时才响应。 但是,每次它应该从 HTTP 请求正文进行模型绑定时,它都会响应状态 500 代码。

我的代码如下。

Web Api 控制器代码:

    [ApiController]
    [Route("api/[controller]")]
    public class OrderController : ControllerBase
    {
        private IOrderRepository _orderRepo;

        public OrderController(IOrderRepository repo) // Dependency Injection
        {
            _orderRepo = repo;
        }

        [HttpGet]
        public IEnumerable<Order> Get() => _orderRepo.Orders;

        [HttpGet("{id}")]
        public Order Get(int id) => _orderRepo[id];

        [HttpPost]
        public Order Post([FromBody] Order order) => _orderRepo.Add(order);

型号Class代码:

    public class Order
    {
        public int Id { get; set; } = 0; 
        public string ClientName { get; set; }
        public string Menu { get; set; }
        public int NoOfMenu { get; set; }

        public Order(string clientName, string menuName, int noOfMenu)
        {
            ClientName = clientName;
            Menu = menuName;
            NoOfMenu = noOfMenu;
        }
    }

POST 操作方法的存储库代码:

        // deleted for brevity

        private Dictionary<int, Order> _orderlist = new Dictionary<int, Order>();
        
        public Order Add(Order newOrder)
        {
            if(newOrder.Id == 0)
            { 
                int key = _orderlist.Count;
                while(_orderlist.ContainsKey(key)) key++;
                newOrder.Id = key;
            }

            _orderlist[newOrder.Id] = newOrder;

            return newOrder;
        }

在 POSTMAN 中,获取请求成功。

这是获取的时间:api/Order

这是获取的时候:api/Order/id

但是,Post 请求 returns 状态 500。

任何人都可以帮助解决这种情况吗?

我测试了你的代码并重现了你的问题。您可以添加无参数构造函数。

public class Order
{
    public int Id { get; set; } = 0;
    public string ClientName { get; set; }
    public string Menu { get; set; }
    public int NoOfMenu { get; set; }

    public Order(string clientName, string menuName, int noOfMenu)
    {
        ClientName = clientName;
        Menu = menuName;
        NoOfMenu = noOfMenu;
    }
    public Order()
    {

    }
}