使用web api和angularjs映射路由

时间:2014-11-18 20:50:14

标签: c# angularjs asp.net-web-api routing

我在ApiController上有两个get方法:

public HttpResponseMessage Get([FromBody]FileGetModel model)

public List<FileModel> Get([FromBody]MemberFIleSearchModel model)

我这样称呼:

return $http.get(urlBase, { params: args });

我收到错误消息:

"Multiple actions were found that match the request: 
Get on type Api.Controllers.FileUploadController
Get on type Api.Controllers.FileUploadController"

Chrome控制台:

GET http://localhost:4345/api/FileUpload/?FileId=5467f90a9fc83d1378c6c8bf&Version=Original_thumb 500 (Internal Server Error) 

我知道这两个动作都有相同的名称但它们是在不同的模型中传递的,所以我认为它应该被正确地路由。

我尝试过使用“Route(”GetFile“)”属性,但我似乎有一个问题,引用正确的或找到正确的命名空间。 HttpRoute(“GetFile”)似乎是我可以编译的唯一属性,但这不起作用,我真的无法找到关于该属性的任何文档。

所以我需要一个解决方案,让“路由”工作或使webapi绑定到正确的模型

1 个答案:

答案 0 :(得分:0)

您可以添加路由属性,例如:

public class OrdersController : ApiController
{
    [Route("customers/{customerId}/orders")]
    [HttpGet]
    public IEnumerable<Order> FindOrdersByCustomer(int customerId) { ... }
}

我建议您使用WebApiRouteDebugger调试路线:https://www.nuget.org/packages/WebApiRouteDebugger/