无法为WebApi 2中的Get配置路由

时间:2018-11-22 14:06:06

标签: asp.net-web-api2

我正在尝试一些非常基本的东西。我正试图从我的WebApi2静态服务获得响应,但不能。

我尚未编辑默认的WebApi(WebApiConfig.cs)路由。

这是控制器

public class AboutController 
{
    [Route("api/about/{id:int}/{service1}/{service2}")]
    public async Task<IHttpActionResult> Get(int accountId, string mainservice, string secondaryservice)
    {
          //logic
    }
}

如果(在浏览器中)导航到http://localhost:58090/api/about,则会收到错误消息The requested resource does not support http method 'GET'.,我认为这是有道理的,因为它与路线(路径)不匹配。

如果我将路径更新为与签名匹配的内容,例如http://localhost:58090/api/about/1/a/b,则会收到错误消息No action was found on the controller About' that matches the request.

即使我将[HttpGet]添加到controller,也没有什么区别。

作为一项健全性测试,我更新为

public class AboutController 
{
    public async Task<IHttpActionResult> Get()
    {
          //logic
    }
}

,它可以完成预期的工作。我不知道为什么添加参数会使事情如此混乱。

我对做错了事感到迷茫

1 个答案:

答案 0 :(得分:0)

路由必须与参数匹配

   [Route("api/about/{id:int}/{service1}/{service2}")]
   public async Task<IHttpActionResult> Get(int id, string mainService, string secondaryService)
    {

上面的方法不起作用,因为它希望根据路由看到service1和service2。

按照以下示例进行更新

   [Route("api/about/{id:int}/{service1}/{service2}")]
   public async Task<IHttpActionResult> Get(int id, string service1, string service2)
    {