这两天在实现一个WebAPI的服务过程中遇到了下面的一些问题

1, 一个Controller中添加多个Action

基于模板创建WebAPI项目后,项目中会自动生成一个ValueController的示例性代码,

其中包含几个以Http标准动作名城Get,Post,Put,Delete等定义的Action模板,并结合路由定义routeTemplate: "api/{controller}/{id}"来提供服务。

当向Controller添加了新HttpPost特性的Action时,在进行Post的请求时,会出现500的错误,详细信息如下:

{"Message":"出现错误。","ExceptionMessage":"找到了与该请求匹配的多个操作: \r\n类型 WebAPI.Controllers.ValuesController 的 ParseValue\r\n类型 WebAPI.Controllers.ValuesController 的 ParseValues","ExceptionType":"System.InvalidOperationException","StackTrace":"   在 System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n   在 System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\r\n   在 System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n   在 System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"}

对Asp.net平台MVC框架项目了解的朋友,一下子就能够定位到是路由定义的问题,通过修改路由为routeTemplate: "api/{controller}/{action}/{id}".在进行请求测试,一切就正常了。

2, 静态JSON消息接收

当一个大粒度的Web服务方法需要接受一些非明确后台定义格式的数据时,在WebAPI 的Controller的action中,用关键字dynamic可以满足要求。

      [HttpPost]

        public void ParseValue(dynamic value)

        {

            var person = JsonConvert.DeserializeObject<Person>(value.ToString());

        }

        [HttpPost]

        public void ParseValues(dynamic value)

        {

            var persons = JsonConvert.DeserializeObject<List<Person>>(value.ToString());

}

  

调试效果如下:

前端请求信息

后端获取信息

最新文章

  1. nodejs中流(stream)的理解
  2. paip.mysql 性能测试by mysqlslap
  3. 一些性能查询的SQL 备忘
  4. Unity 用户手册用户指南二维纹理 (Texture 2D)
  5. mysqli_multi_query($link, $sql_w);
  6. 学习配置vsftp 进行ftp文件的传输
  7. 【C语言】17-预处理指令3-文件包含
  8. php header头信息 举例
  9. Codeforces Round #260 (Div. 1) --B. A Lot of Games (Trie)
  10. (转)C/C++中static关键字
  11. Myeclipse 创建 Web Maven项目
  12. 201521123004《Java程序设计》第5周学习总结
  13. Spring Boot 和 Docker 实现微服务部署
  14. python爬取中国天气网站数据并对其进行数据可视化
  15. Spring_xml和注解混合方式开发
  16. 微信小程序 --- 表单输入验证(手机号、邮箱验证、输入非空)
  17. LeetCode83.删除排序链表中的重复的元素
  18. Word2Vec实现原理(Hierarchical Softmax)
  19. Git-工作区和暂存区的概念
  20. Android Studio导入Eclipse项目的两种方法

热门文章

  1. wireshark 抓包
  2. Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)
  3. (转)分布式中使用Redis实现Session共享(二)
  4. (转)多种方法实现Loading(加载)动画效果
  5. redis 数据持久化 aof方式
  6. Javascript显示和隐式类型转换
  7. Spring声明式事务为何不回滚
  8. 微电子中的die-to-die和within-die
  9. rvm的安装, 使用rvm, 安装ruby, 以及gem的使用 (转)
  10. 如何构建ASP.NET MVC4&amp;JQuery&amp;AJax&amp;JSon示例