在.net下,创建一个HTTP服务,有很多方案,比较老ashx,一般处理程序(HttpHandler),

Web Service

SOAP协议的,数据格式是XML,HTTP协议

        WCF

基于SOAP的,数据格式是XML,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.

Web API(文章主讲)

简单的构建HTTP服务,.net平台上Web API 是一个开源的、理想的、构建REST-ful 服务的技术,支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮,说白了,Asp.net mvc 你会用,那么编写webapi,构建http服务,也木有问题,轻量级的框架,并且对限制带宽的设备,比如智能手机等支持的很好。

本人都自己编写测试过webservice,wcf,webapi,但是由于工作中构建的服务多用于浏览器、手机等,也是.net平台上,所以对webapi的使用更多。当然使用的路上,发现遇到的”坑“也多,当然不是说webapi不好使,主要是自己不熟悉。

  1. Web Api坑之“我他妈写的action,请求咋就进不来,还提示我找不到与请求 URI匹配的 HTTP 资源”

尝试修改controller中的action名字,发现类post,get开头的action-public void GetData1(string data),但是诡异的问题是当继续再添加几个action-public void GetData2(string data),public void GetData2(string data);

此时我的心情就是“日了狗了”明明就是两个不同action,你他妈居然提示我“找到了与该请求匹配的多个操作”

还是太年轻,经验太少,查阅了相关资料,

“      微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api

是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,

它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口

更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete

等,它们分别对应的几个操作,下面讲一下:

GET:生到数据列表(默认),或者得到一条实体数据

POST:添加服务端添加一条记录,记录实体为Form对象

PUT:添加或修改服务端的一条记录,记录实体的Form对象,记录主键以GET方式进行传输

DELETE:删除 服务端的一条记录

注意上面公开的API接口都是在XMLHttpRequest情况下调用的,当然你可以使用jquery的ajax组件

来完成这个请求调用,它的代码更加面向对象.”

哦,原来如此,认识webapi是认识get,post,put,delete,(这是我猜的,测试下),再加一个action,test

再请求, ,

找到了与该请求匹配的多个操作: 
类型 Service.Controllers.EnterOrExitController 的 test
类型 Service.Controllers.EnterOrExitController 的 GetData
类型 Service.Controllers.EnterOrExitController 的 UploadData

好像是猜错了,他好像才不管你action的名字,你发起httpget请求,他就把action里面的get全搞出来匹配,http-get-3个扔给你,哦,OMG,“我们找到了与该请求匹配的多个操作,你要哪一个?”,

既然是这样,我需要在一个api控制器中写多个action用以请求访问咋办呢,怎样才能路由到指定的action,去完成http请求。

答案,就是改路由的配置文件,

可能你也发现了,这份配置文件中:

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

他娘的根本没有规定action,所以怎样都匹配不到呢,人家是按照REST风格默认去找get,post,要想向asp.net mvc web中那样请求,你只能修改为routeTemplate: "api/{controller}/{action}/{id}",

另外

转载于:https://www.cnblogs.com/yellowcool/p/7505211.html

【找不到与请求 URI匹配的 HTTP 资源】(转)相关推荐

  1. java安装找不到uri,【找不到与请求 URI匹配的 HTTP 资源】(转)

    在.net下,创建一个HTTP服务,有很多方案,比较老ashx,一般处理程序(HttpHandler), Web Service SOAP协议的,数据格式是XML,HTTP协议 WCF 基于SOAP的 ...

  2. jetty 在请求URI里传入非法字符,jetty会断开连接,导致nginx认为该节点不健康

    为什么80%的码农都做不了架构师?>>>    jetty 在请求URI里传入非法字符(如直接一个16进制字节A1,非%A1,用抓包TCP工具发送),jetty抛出如下错误 8.1. ...

  3. spring boot请求后缀匹配的操作

    这篇文章主要介绍了spring boot 请求后缀匹配的操作,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 spring boot 请求后缀匹配 spring boo ...

  4. 在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素找不到与此协定匹配的终结点元素

    在引用WebService后,程序运行到实例化WebService时报错,错误如下: 由于WebService我是在类库里添加的,主程序引用了这个类库,就出现了这个问题. 解决办法: 根据异常信息: ...

  5. LeetCode 28. 找出字符串中第一个匹配项的下标 -- 字符串编码成数字匹配

    找出字符串中第一个匹配项的下标 中等 1.6K 相关企业 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 ...

  6. 28.找出字符串中第一个匹配项的下标

    28.找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始).如果 ...

  7. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串

    剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...

  8. 解决HTTP 414“请求URI太长”的思路

    参考社区问答https://cloud.tencent.com/developer/ask/96327 1.不建议改apache的配置 在Apache下,限制是一个可配置的值.如果想要支持更长的请求U ...

  9. [Visual Studio]非常规卸载——找不到与以下参数匹配的产品

    前阵子电脑加装了一块固态硬盘,将原先D盘资料挪到了新盘中,而之前为了节省系统盘空间将Visual Studio分盘安装,导致现在Visual Studio Installer 无法识别. 如果是常规卸 ...

最新文章

  1. 第25节 典型应用集成技术
  2. 代码生成器,自己实现的一个基于模板的在线代码生成网站
  3. CentOS 快速安装pip
  4. MOCTF-Web-一道水题
  5. 字符串处理 —— 单模式匹配 —— MP 算法与 KMP 算法
  6. php shell exec 阻塞,php shell_exec()vs exec()
  7. Airflow 中文文档:快速开始
  8. Haproxy实现负载均衡及相关配置(添加日志、设定自动刷新时间、控制访问、动静分离、读写分离)
  9. 医院患者随访管理系统
  10. python图灵机器人教程_Python-微信图灵机器人
  11. Axure学习之快速上手
  12. 教你如何用PS轻松制作ico图标
  13. python词云代码手机_【云计算】爬取淘宝手机品牌词云分析(python)
  14. The missing semester of your CS education--命令行环境
  15. VB实现自动生成统计图表
  16. cat实时监控-入门demo
  17. NOIP2016模拟 星际争霸(二分)
  18. ElasticSearch基础:从倒排索引说起,快速认知ES
  19. P2600 [ZJOI2008]瞭望塔
  20. [XCTF]funny_video(难度2)

热门文章

  1. html调整上下的间距,html上下间距怎么调
  2. JSTL标签库动态生成表格
  3. ThinkPad T440s 改 T450s
  4. php excel下载打不开了,php下载excel无法打开的解决方法_PHP教程
  5. 条件随机场CRF的理解
  6. 双向Rsync实时同步
  7. scons的介绍、使用和简单实例
  8. Java-数据库编程技术(MySQL)
  9. Python+WebKit+HTML开发桌面应用程序
  10. Android开发应该用什么语言