商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > .Net解决WebAPI中“服务器响应状态码为405(方法不允许)”错误的两种解决方案

.Net解决WebAPI中“服务器响应状态码为405(方法不允许)”错误的两种解决方案

  发布于2026-07-19 阅读(0)

扫一扫,手机访问

前两天在一个新项目里调用 Web API 时,突然弹了个 405 错误——服务器响应状态码为“方法不允许”。当时正打算通过 API 删除一条记录,明明代码逻辑没问题,却怎么也删不掉。折腾了一圈之后,总算找到了两个靠谱的解决办法。这里整理出来,希望能帮你少走弯路。

遇到 405 错误,不妨先试试下面这两种方案,通常能搞定。

方案 1:修改 Web.Config 文件

这是最直接的第一步。在 Web.Config 文件里加上下面这段配置:

validation validateIntegratedModeConfiguration= "false" />  
  
     
  

如果还没解决,再在 标签里补一个移除项:


   
   .....

要是改完配置还是不行,可以试试下一个方案。

方案 2:恢复参数名称

Web API 的路由配置通常放在 WebApiConfig.cs 里,默认的参数名是 id,就像这样:

.Net解决WebAPI中“服务器响应状态码为405(方法不允许)”错误的两种解决方案

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 模块在捣乱,要么是路由参数名不匹配。上面的两种方案基本能覆盖大多数情况。如果你在项目里也踩过这个坑,不妨对照着排查一下,大概率能解决。

本文转载于:https://www.jb51.net/aspnet/362189e30.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注