2015-12-14 56 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