首页 > 代码库 > 那些年踩过的WebAPI的坑(一)
那些年踩过的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 !只能感叹一下
---恢复内容结束---
那些年踩过的WebAPI的坑(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。