【问题标题】:Unable to connect to ASP.NET web api when I add additional parameters添加其他参数时无法连接到 ASP.NET Web api
【发布时间】:2017-08-19 06:24:39
【问题描述】:

我正在尝试理解 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 进行查询。这有效并返回预期值。

现在我想添加更多参数,这就是问题所在!

我已将方法更新为

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

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

"Message": "请求的资源不支持http方法'POST'。"

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

找不到资源

之前在 Stackoverflow 上已经提到过这一点,据我了解,该 URL 是“不正确的”

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

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

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

【问题讨论】:

    标签: c# asp.net-web-api2 asp.net-web-api-routing


    【解决方案1】:

    这是一个路由问题。你没有正确配置你的路由。

    首先让我们更新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 }
            );
        }
    }
    

    现在配置好了,我建议使用 属性路由

    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 控制器

    【讨论】:

    • 特别感谢您提供指向属性路由的链接。
    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多