首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web多个参数as /氢1/顺2/顺3/不起作用

Web多个参数as /氢1/顺2/顺3/不起作用
EN

Stack Overflow用户
提问于 2015-12-14 20:54:46
回答 1查看 312关注 0票数 0

我有一个ASP.NET Web项目,其中我的控制器中只有一个方法。

代码语言:javascript
复制
public IHttpActionResult MyMethod(int param1, int param2, int param3)
{
  var theSum = param1 + param2 + param3;
  return Ok(theSum);
}

我在RouteConfig.cs中有以下路线

代码语言:javascript
复制
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时,一切都如预期的那样工作。

代码语言:javascript
复制
http://localhost/api/mycontroller/mymethod?param1=2&param2=4&param3=6

然而,当我试图按下面的方式调用API时,我会得到一个404 - The resource cannot be found错误。

代码语言:javascript
复制
http://localhost/api/mycontroller/mymethod/2/4/6/

知道为什么吗?我认为我已经正确地设置了路由,并且由于参数是.NET原语,所以我想我可以将它们作为param1/param2/param3传递

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-14 22:05:19

你在用MVC5吗?如果是这样的话,我建议使用路由()属性来代替路由集合,至少对我来说更容易管理。我可以用这个方法来处理你的样本。

代码语言:javascript
复制
[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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34276411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档