繁体   English   中英

Web API路由wint操作要求多个get方法的名称

[英]Web api route wint action require names for multiple get method

我有一个名为product的asp.net mvc控制器。

public class ProductController : ApiController
{
    [HttpGet]
    public IHttpActionResult Get()
    {
        return Ok("product");
    }
}

我的路线是这样的。

config.Routes.MapHttpRoute("DefaultRoute", 
     "api/{controller}/{id}", 
      new { id = RouteParameter.Optional });

我可以使用以下网址访问产品的Get方法: localhost:2541/api/product

我需要一些estra来解决。

public class ProductController : ApiController
{

    [HttpGet]
    public IHttpActionResult Get()
    {
        return Ok("product");
    }

    [HttpGet]
    public IHttpActionResult Hello()
    {
        return Ok("Hello from product");
    }
}

我设定了新路线。

config.Routes.MapHttpRoute("ActionsRoute", 
    "api/{controller}/{action}/{id}", 
    new { id = RouteParameter.Optional });

但是我无法访问localhost:2541/api/product

错误:

找到多个符合请求的操作:Get

这是因为现在通过包含{action}路由参数,现在需要在请求中包括动作的名称,否则将不知道选择哪个动作。 喜欢

localhost:2541/api/product/Get

如果仍然需要根,则在映射路由时包括默认值。

config.Routes.MapHttpRoute("ActionsRoute", 
    "api/{controller}/{action}/{id}", 
    new { action = "Get", id = RouteParameter.Optional });

完成后,下面的调用将如下所示

GET localhost:2541/api/product        --> ProductController.Get
GET localhost:2541/api/product/Get    --> ProductController.Get
GET localhost:2541/api/product/Hello  --> ProductController.Hello

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM