2015-12-14 63 views
0

我有,我在我的控制器本身有一个单一的方法的一个ASP.NET Web API项目..的Web API - 多参数/参数1 /参数2 /参数3 /不工作

public IHttpActionResult MyMethod(int param1, int param2, int param3) 
{ 
    var theSum = param1 + param2 + param3; 
    return Ok(theSum); 
} 

我有在RouteConfig.cs

routes.MapRoute(
    name: "MyRoute", 
    url: "api/{controller}/{action}/{param1}/{param2}/{param3}", 
    defaults: new { controller = "MyController", action = "MyRoute", param1 = UrlParameter.Optional, param2 = UrlParameter.Optional, param3 = UrlParameter.Optional } 
); 

当我打电话与下列URL一切正常的API以下路线..

http://localhost/api/mycontroller/mymethod?param1=2&param2=4&param3=6 

但是,当我尝试按以下方式调用API时,出现404 - The resource cannot be found错误。

http://localhost/api/mycontroller/mymethod/2/4/6/ 

任何想法为什么?我以为我有正确的路由设置,因为参数是.NET基元我虽然我可以通过它们作为param1/param2/param3

+0

尝试的摧毁尾随/? –

+0

刚刚尝试删除尾部'/',仍然得到了404 – webworm

+0

Your Action =“MyRoute”我相信应该是Action =“MyMethod” –

回答

1

你使用MVC5吗?如果是这样,我会建议使用Route()属性代替路由集合,至少对我来说更容易管理。我能够使用这种方法来处理您的示例。通过http://localhost/api/values/mymethod/2/4/6

[Route("api/values/MyMethod/{param1}/{param2}/{param3}")] 
[HttpGet] 
public IHttpActionResult MyMethod(int param1, int param2, int param3) 
{ 
    var theSum = param1 + param2 + param3; 
    return Ok(theSum); 
} 

,然后调用它正常返回12

+0

通过使用Route属性,我将移除RouteConfig.cs中的“MyRoute”条目? – webworm

+0

是的,删除它,只是用你的属性装饰方法 –

+0

工作!谢谢一堆!有趣的是为什么'Route.Config'中的路由配置不起作用。 – webworm