• 那些年踩过的WebAPI的坑(一)


    Visual Studio创建一个web项目,

    在下一步的时候创建WebAPI项目的时候勾选web API之后,系统会生成一个web项目。

    首先看一下webapi的路由配置,在App_start/webapiconfig.cs中,可以看到如下代码:

     1 public static void Register(HttpConfiguration config)
     2         {
     3             // Web API configuration and services
     4 
     5             // Web API routes
     6             config.MapHttpAttributeRoutes();
     7 
     8             config.Routes.MapHttpRoute(
     9                 name: "DefaultApi",
    10                 routeTemplate: "api/{controller}/{id}",          //注意此处
    11                 defaults: new { id = RouteParameter.Optional }
    12             );
    13         }

    如果按照此默认的webAPI进行开发的话,新建一个APIController,并创建一个方法,如这里我自己的:

    当只有一个登陆方法是,运行此项目,请求../api/Account/login没问题。但有时候在Account中可能有很多API方法,不仅仅是登陆还有注册呢?再添加一个方法regist,请求../api/Account/regist。是不是对接下来的500错误很惊讶?

    "Message":"An error has occurred.","ExceptionMessage":"Multiple actions were 
     found that match the request 多个匹配该请求的Action

    再回头看生成的API配置路由,对于请求

    ../api/Account/login
    
    ../api/account/regist

    匹配路径:

    routeTemplate: "api/{controller}/{id}",

    name这两个路由可不就有多个action了吗?所以在匹配路径上修改为

    routeTemplate: "api/{controller}/{action}/{id}",

    OK !只能感叹一下

  • 相关阅读:
    STL整理之map
    链表及数组模拟链表
    树链剖分详解
    Luogu P3879 【[TJOI2010]阅读理解】
    Luogu P2727 【01串 Stringsobits】
    CF1200D 【White Lines】
    Luogu P4945 【最后的战役】
    Luogu P4944 【PION贪吃蛇】
    Luogu P2426 【删数】
    P2163 【[SHOI2007]园丁的烦恼】
  • 原文地址:https://www.cnblogs.com/kingkangstudy/p/7211053.html
Copyright © 2020-2023  润新知