我有一个ASP.NET Web API项目,我在控制器中有一个单独的方法..
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¶m2=4¶m3=6
然而,当我尝试按如下方式调用API时,出现404 - The resource cannot be found
错误。
http://localhost/api/mycontroller/mymethod/2/4/6/
任何想法为什么?我以为我正确设置了路由,因为参数是.NET原语我虽然可以将它们作为param1/param2/param3
答案 0 :(得分:1)
您使用的是MVC5吗?如果是这样,我建议使用Route()属性而不是routes集合,对我来说至少它更容易管理。我能够使用这种方法使用您的样本。
[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);
}
然后通过http://localhost/api/values/mymethod/2/4/6调用它正确返回12。