我有一个ASP.NET Web项目,其中我的控制器中只有一个方法。
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传递
发布于 2015-12-14 22:05:19
你在用MVC5吗?如果是这样的话,我建议使用路由()属性来代替路由集合,至少对我来说更容易管理。我可以用这个方法来处理你的样本。
[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。
https://stackoverflow.com/questions/34276411
复制相似问题