添加附加参数时无法连接到 ASP.NET 网络 api

Unable to connect to ASP.NET web api when I add additional parameters

我正在尝试了解 Web Api 2(Visual Studio 中的 MVC 项目)。

方法是

  [HttpPost]
  public string Post(int id, string e, bool o)
  ///code removed

使用 Postman,我可以使用 Post 和路径 http://localhost:62093/api/Demo/5 进行查询。这有效并且 returns 预期值。

现在我想添加更多的参数,这是错误的地方!

我已将我的方法更新为

    [HttpPost]
    public string Post(int id, string e, bool o)

现在,当我尝试使用(再次)Post 和路径 http://localhost:62093/api/Demo/5 查询时,我看到

"Message": "The requested resource does not support http method 'POST'."

然后我尝试更改 URL,所以当我使用 Post 和新路径 http://localhost:62093/api/Demo/5/a/false 时,我看到 HTML 文件响应

The resource cannot be found

之前在 Whosebug 上已经提到过,据我了解,URL 是 'incorrect'

认为这可能是我更新我的路线的问题

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}/{s}/{o}",
            defaults: new { id = RouteParameter.Optional, s = RouteParameter.Optional, o = RouteParameter.Optional }
        );

但同样的问题仍然存在。我不确定我做错了什么。

这是路由问题。您没有正确配置路由。

首先让我们更新 WebApiConfig.cs 文件

public static class WebApiConfig {
    public static void Register(HttpConfiguration config) {
        // Attribute routing.
        config.MapHttpAttributeRoutes();

        // Convention-based routing.
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

现在我建议使用 Attribute routing

public class DemoController : ApiController {
    [HttpPost]
    [Route("api/Demo/{id:int}/{e}/{o:bool}")] //Matches POST api/Demo/5/a/false
    public IHttpActionResult Post(int id, string e, bool o) {
        return Ok();
    }
}

我最终建议阅读 Attribute Routing in ASP.NET Web API 2 以更好地了解如何正确路由到您的 API 控制器