【发布时间】:2013-03-26 15:55:19
【问题描述】:
我有两种方法,一个在我的控制器类中接受一个 poco 和另一个 poco 列表:
[AcceptVerbs("PUT")]
[ActionName("Item")]
public void SaveItem([FromBody] Item item)
{
m_controller.SaveItem(item);
}
[AcceptVerbs("PUT")]
[ActionName("Items")]
public void SaveItems([FromBody] List<Item> items)
{
m_controller.SaveItem(items);
}
我的路由表如下所示:
routes.MapHttpRoute("Item Route",
"api/item/{orderId}",
new
{
controller = "MyOrder",
action = "Item",
orderId = RouteParameter.Optional
});
routes.MapHttpRoute("Items Route",
"api/items/{orderId}",
new
{
controller = "MyOrder",
action = "Items",
orderId = RouteParameter.Optional
});
这按预期工作。但我想重构代码以尝试重载。我试图重载控制器中的方法并且只有一条路由,但它失败并出现 500 错误 - 无效请求。我认为 webapi 将通过验证参数来解决调用 - 如果它是一个列表,那么它将调用带有列表作为参数的重载方法,否则调用其他方法。我打算做类似的事情:
[AcceptVerbs("PUT")]
[ActionName("Item")]
public void SaveItem([FromBody] Item item)
{
m_controller.SaveItem(item);
}
[AcceptVerbs("PUT")]
[ActionName("Item")]
public void SaveItem([FromBody] List<Item> items)
{
m_controller.SaveItem(items);
}
我的路由表如下所示:
routes.MapHttpRoute("Item Route",
"api/item/{orderId}",
new
{
controller = "MyOrder",
action = "Item",
orderId = RouteParameter.Optional
});
【问题讨论】:
-
你遇到了什么异常?
-
我总是收到“500 错误 - 无效请求”。没什么。
-
你远程访问了吗?
标签: c# asp.net asp.net-web-api put