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。
我的问题是我做错了什么?我应该如何修改方法?
试着在我的电脑上运行它,我发现让它工作所需的唯一修复方法是:
`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是必填字段