.Net解决WebAPI中“服务器响应状态码为405(方法不允许)”错误的两种解决方案
时间:2026-08-24 | 作者:怪兽小助手 | 阅读:0前两天在一个新项目里调用 Web API 时,突然弹了个 405 错误——服务器响应状态码为“方法不允许”。当时正打算通过 API 删除一条记录,明明代码逻辑没问题,却怎么也删不掉。折腾了一圈之后,总算找到了两个靠谱的解决办法。这里整理出来,希望能帮你少走弯路。
遇到 405 错误,不妨先试试下面这两种方案,通常能搞定。
方案 1:修改 Web.Config 文件
这是最直接的第一步。在 Web.Config 文件里加上下面这段配置:
validation validateIntegratedModeConfiguration= "false" />
如果还没解决,再在 标签里补一个移除项:
.....
要是改完配置还是不行,可以试试下一个方案。
方案 2:恢复参数名称
Web API 的路由配置通常放在 WebApiConfig.cs 里,默认的参数名是 id,就像这样:
config.Routes.MapHttpRoute( ?
? ?name: "DefaultApi", ?
? ?routeTemplate: "api/{controller}/{id}", ?
? ?defaults: new { id = RouteParameter.Optional } ?
); ?
如果你在控制器里把参数名改成了别的,比如 subId,那路由就匹配不上了,405 错误就会冒出来。举个例子,当时我的删除函数长这样:
// DELETE: api/Subscriber/5 ?
public void Delete(int subId) ?
{ ?
? ? tbl_Subscribers dlt = myEntity.tbl_Subscribers.Find(subId); ?
? ? if (dlt != null) ?
? ? { ?
? ? ? ? try ?
? ? ? ? { ?
? ? ? ? ? ? myEntity.tbl_Subscribers.Remove(dlt); ?
? ? ? ? ? ? myEntity.Sa veChanges(); ?
? ? ? ? } ?
? ? ? ? catch (Exception) ?
? ? ? ? { ?
? ? ? ? ? ? throw; ?
? ? ? ? } ?
? ? } ?
} ?
把参数名改回 id 之后,问题立刻解决了:
// DELETE: api/Subscriber/5 ?
public void Delete(int id) ?
{ ?
? ? tbl_Subscribers dlt = myEntity.tbl_Subscribers.Find(id); ?
? ? if (dlt != null) ?
? ? { ?
? ? ? ? try ?
? ? ? ? { ?
? ? ? ? ? ? myEntity.tbl_Subscribers.Remove(dlt); ?
? ? ? ? ? ? myEntity.Sa veChanges(); ?
? ? ? ? } ?
? ? ? ? catch (Exception) ?
? ? ? ? { ?
? ? ? ? ? ? throw; ?
? ? ? ? } ?
? ? } ?
} ?
改完参数名,一切恢复正常。如果不想改参数名,也可以在 WebApiConfig.cs 里调整路由模板,把参数名对应上,但最省事的办法还是保持默认的 id。
总结
405 错误在 Web API 开发中不算少见,原因通常就两个:要么是 IIS 或配置里 WebDA V 模块在捣乱,要么是路由参数名不匹配。上面的两种方案基本能覆盖大多数情况。如果你在项目里也踩过这个坑,不妨对照着排查一下,大概率能解决。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- 隐式 vs 显式:看懂 C# 类型转换该怎么选
- 时间:2026-08-25
-
- C# 14 新功能解析:从扩展成员到 Span 优化,哪些更新最值得用
- 时间:2026-08-25
-
- C# 中 const 与 enum 怎么用:从常量、只读字段到状态枚举一次讲清
- 时间:2026-08-25
-
- 一文搞懂 C#/.NET DateTimeOffset:时间戳、时区与偏移量全掌握
- 时间:2026-08-25
-
- C# 方法全景解析:从声明结构到参数传递,再到返回值与语法糖
- 时间:2026-08-25
-
- 从 if 到 for:一文理清 C# 控制流语句怎么用
- 时间:2026-08-25
-
- C# 12 集合表达式详解:用 `[...]` 统一数组、List 与 Span 初始化
- 时间:2026-08-25
-
- .NET 中如何实现高精度定时器
- 时间:2026-08-25
精选合集
更多大家都在玩
热门话题
大家都在看
更多-
- 平板模式如何退出?快速解决方法
- 时间:2026-08-25
-
- 惠普投影仪手机投屏指南:支持哪几种?怎么连?
- 时间:2026-08-25
-
- 技术大神复活1999版QQ!Win11也能运行,怎么做到的?
- 时间:2026-08-25
-
-
- WSL安装Ubuntu全攻略:Win11上怎么装?有啥用?
- 时间:2026-08-25
-
- Win11小技巧:在开始菜单显示iPhone信息侧栏
- 时间:2026-08-25
-
- Win11小技巧:怎样关掉文件管理器里烦人的首页?
- 时间:2026-08-25
-
- 微软 Copilot 怎么关闭?关闭Win10任务栏Copilot的3种方法
- 时间:2026-08-25
