代码之家  ›  专栏  ›  技术社区  ›  MyDaftQuestions

无法连接到ASP。添加其他参数时的NET web api

  •  2
  • MyDaftQuestions  · 技术社区  · 9 年前

    方法是

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

    Post 和路径 http://localhost:62093/api/Demo/5 . 这起作用并返回预期值。

    我已将我的方法更新为

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

    现在,当我尝试使用(再次)查询时 邮递 http://localhost:62093/api/Demo/5 我懂了

    “Message”:“请求的资源不支持http方法‘POST’。”

    以及新的道路 http://localhost:62093/api/Demo/5/a/false

    找不到资源

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

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

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   Nkosi    9 年前

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

    首先,让我们更新 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