Web API CreateAtRoute方法出错

本文关键字:出错 方法 CreateAtRoute API Web | 更新日期: 2023-09-27 18:15:11

我在我的Web API中有以下post方法:

[HttpPost]
public IHttpActionResult PostOrderItem(MyClass.OrderItem ordItm)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    using (MyContext db = new MyContext())
    {
        db.OrderItems.Add(ordItem);
        db.SaveChanges();
        return CreatedAtRoute("OrderItemApi", new { id = orditm.ItemID, id2 = orditm.ItemVersionID, id3 = ordItm.OrderID }, ordItem);
    }
}

我的OrderItemApi路由如下:

  config.Routes.MapHttpRoute(
            name: "OrderItemApi",
            routeTemplate: "api/{controller}/{action}/{id}/{id2}",
            defaults: new { id = RouteParameter.Optional, id2 = RouteParameter.Optional, id3 = RouteParameter.Optional });

和我的OrderItem班是:

 [Table("SN_OrderItems")]
public class OrderItem
{
    [Column(Order = 0), Key]
    public int ItemID { get; set; }
    [Column(Order = 1), Key]
    public int ItemVersionID { get; set; }
    [Column(Order = 2), Key]
    public int OrderID { get; set; }
    public string ItemNote { get; set; }
    public int ItemSortOrder { get; set; }
}

上面的控制器方法工作得很好,它做了预期的-将一个项目添加到OrderItem表中,但随后它在行上出错:

返回CreatedAtRoute("OrderItemApi", new {id = OrderItemApi。ItemID, id2 = ordItm。ItemVersionID, id3 = ordItm。

我的问题是我做错了什么?我应该如何修改方法?

Web API CreateAtRoute方法出错

试着在我的电脑上运行它,我发现让它工作所需的唯一修复方法是:

        `routeTemplate: "api/{controller}/{action}/{id}/{id2}"`

:

        `routeTemplate: "api/{controller}/{action}/{id}/{id2}/{id3}"`

虽然id3不包含在您的routeTemplate中,并且您将其设置为可选的,但您实际上使用它作为CreatedAtRoute中的routeValues之一。

如果这不能解决问题,您可能需要考虑一个异常过滤器:https://www.asp.net/web-api/overview/error-handling/exception-handling.

找出错误了!问题是其中一个字段ItemNote是必填字段