C# WebAPI项目,不支持HttpPut请求!!!
有点标题党了,这个异常的现象是这样的:
我有一个正在跑的项目,要对接第三方厂家的设备。 对方给的接口文档,里面有一个接口是需要我这边实现的,要求必须是PUT请求方式。
所以我在项目基础上,新增一个WebAPI的controller类。 实现这个接口,限定请求方式。看起来似乎一切都那么的自然。
但是,用postman做本地调试,一调用就返回404错误!!!

开始我以为是我的WebAPi路由配置有问题,仔细检查了路由,发现没问题。 为了验证,我又写了一个HttpGet请求的接口,用postman调试,这次通了, 说明路由配置是没问题的!!
那么问题出在哪里?我网上搜了搜,大家前篇一律都说是webConfig的配置问题。

说要remove掉WebDAV节点

我按照网上说的,设置了,依然不行!!!!! 404错误还是存在,于是开始了长达两天的自我纠结过程。。。。。。
1.怀疑代码有问题 —— 但是不可能啊,我就写了一个空方法,仅仅是测试是否能监听到请求。 不会存在功能或者逻辑错误 ! pass
2.怀疑WebApiConfig配置问题 —— 这个也不可能,毕竟post、get都可以,只有put不行! pass
3.怀疑RouteConfig配置问题 —— 貌似也不可能。。。! pass
4.怀疑Global.asax配置问题 —— 做了各种尝试,最终也排除了这个地方出问题的可能性! pass
5.怀疑引用类库版本问题 —— 新建了一个WebAPI项目(新项目PUT请求正常),调整我的老项目,类库版本全都跟新项目相同,并且删除掉老项目无关代码。最终排除是类库版本问题!pass
6.怀疑电脑问题 —— 把代码打包给同事,让他在自己电脑上测试,同样404,所以不是电脑问题!pass
最后谜底揭晓:
我最后在比对新项目和老项目的 .csproj 文件和 .csproj .user文件时,发现.csproj .user有一行参数有差异
<IISExpressUseClassicPipelineMode>true</IISExpressUseClassicPipelineMode>
这个参数是用来设置IISExpress的管道模式,true是经典模式,即IIS6之前的那种ISAPI的模式; false是集成模式,是IIS6之后的管道模式!
我发现新项目,这个参数是false,用的是集成模式!
老项目,这个参数是true,用的是经典模式!
我选中老项目的工程,按F4,调出属性设置界面,调整模式为集成模式
然后编译、运行、postman测试。 通了!!!!!!!!!!!!!

后记:
在遇到代码的疑难杂症时,我的最强大招就是代码删减法。 一点一点去除无用代码和非关键参数变量,最后剔除到只剩下最核心的部分。
然后进行详细比对,最后基本都能找到问题根源
C# WebAPI项目,不支持HttpPut请求!!!的更多相关文章
- .net webapi项目中支持session
webapi中默认是不支持session的开启的 需要在Global.asax文件中,添加如下代码 public override void Init() { this.PostAuthenticat ...
- 第一个WebAPI项目
(1)新建一个ASP.NET MVC项目,取名为:MyMvcWebAPIDemo,项目类型选择WebAPI. (2)在Models中新增一个类,取名为:Product,作为我们要测试的实体模型. ...
- Asp.net WebApi 项目示例(增删改查)
1.WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务.ASP.NET Web API 是一种用于在 .NET ...
- 如何在启用JWT Token授权的.NET Core WebApi项目中下载文件
背景 前几天,做项目的时候遇到一个文件下载的问题.当前系统是一个前后端分离的项目,前端是一个AngularJs项目, 后端是一个.NET Core WebApi项目.后端的Api项目使用了Jwt To ...
- 基于.NET Core 框架搭建WebApi项目
一 什么是.NET Core? 随着2014年 Xamarin和微软发起.NET基金会,微软在2014年11月份开放.NET框架源代码.在.NET开源基金会的统一规划下诞生了.NET Core .也就 ...
- AspNetCore网关集成Swagger访问使用IdentityServer保护的webapi项目
创建webapi项目 创建四个webapi项目,两个处理业务,一个网关,一个验证中心.四个项目对应的端口如下, ApiGateway:1999 IdentityServer:16690 Service ...
- Restful WebApi项目开发实践
前言 踩过了一段时间的坑,现总结一下,与大家分享,愿与大家一起讨论. Restful WebApi特点 WebApi相较于Asp.Net MVC/WebForm开发的特点就是前后端完全分离,后端使用W ...
- [asp.net mvc 奇淫巧技] 06 - 也许你的项目同一个用户的请求都是同步的
一.感慨 很久前看到一篇博客中有句话大致的意思是:“asp.net 程序性能低下的主要原因是开发人员技术参差不齐”,当时看到这句话不以为然,然而时间过的越久接触的.net 开发人员越多就越认同这句话: ...
- 使用Cors在WebApi中实现跨域请求,请求方式为angular的 $http.jsonp
使用Cors在WebApi中实现跨域请求 第一步,在webapi项目中安装cors 在Web API配置文件中(Global.asax)进行全局配置: public class WebApiAppli ...
随机推荐
- 史蒂夫-乔布斯(Steve Jobs)斯坦福大学演讲稿(中英对照)
这是苹果公司和Pixar动画工作室的CEO Steve Jobs于2005年6月12号在斯坦福大学的毕业典礼上面的演讲稿. Thank you. I'm honored to be with you ...
- PHP sort() 函数
实例 对数组 $cars 中的元素按字母进行升序排序: <?php $cars=array("Volvo","BMW","Toyota" ...
- PHP fnmatch() 函数
定义和用法 fnmatch() 函数根据指定的模式来匹配文件名或字符串. 语法 fnmatch(pattern,string,flags) 参数 描述 pattern 必需.规定要检索的模式. str ...
- PHP define() 函数
实例 定义一个大小写敏感的常量: <?php define("GREETING","Hello you! How are you today?"); ec ...
- PHP str_split() 函数
实例 把字符串 "Hello" 分割到数组中: <?php print_r(str_split("Hello")); ?>高佣联盟 www.cgew ...
- C/C++编程笔记:C语言打造中国象棋游戏,项目源代码分享!
中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史.由于用具简单,趣味性强,成为流行极为广泛的棋艺活动. 它是中国棋文化,也是中华民族的文化瑰宝,它源远流长,趣味浓厚,基本规 ...
- luogu P6125 [JSOI2009]有趣的游戏
LINK:有趣的游戏 直接说做法了.首先是 我是不会告诉你我看完题后不太会 摸了2h鱼后看题解 一直翻发现自己题目有些没读完整.. 题目中说了每个字符串长度相同 而我一直在思考AC自动机可能存在一些节 ...
- EF Code First数据库模型及属性约束
1.今日完成任务 数据库实体的创建 实体属性约束的添加 实体之间关系的添加 2.核心代码 EF模型 属性约束及实体之间的关系 使用FlutAPI对模型进行修正 3.遇到的问题及解决方案 最主要的是联合 ...
- x86架构:实模式下的中断
https://www.cnblogs.com/Philip-Tell-Truth/p/5317983.html 这里有详细的过程说明.文字很多,为了方便阅读和理解,提炼了一些要点后归纳.整理了如 ...
- swift demo1 tableview
代码如下: // // ViewController.swift // demo1_tableview // // Created by Alice_ss on 2018/2/24. // Copyr ...