You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET项目PUT/DELETE请求报405 Method Not Allowed,GET/POST正常

.NET项目PUT/DELETE请求返回405错误排查方案

1. 排查WebDAV模块冲突

这是IIS/IIS Express部署场景下最高发的原因,WebDAV模块默认会拦截PUT、DELETE类型的请求。
修复方式:在项目根目录的web.config文件中添加如下配置,移除WebDAV模块:

<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>

如果是ASP.NET Core项目,无需额外配置,只需确保未在中间件管道中启用WebDAV相关组件即可。

2. 排查接口特性与路由配置

  • 确认目标接口方法已添加正确的[HttpPut]/[HttpDelete]特性,未误写为其他请求类型特性
  • 确认请求URL与接口路由模板完全匹配,若接口路由要求携带参数(如id),请求未传对应参数时也可能触发405错误
  • 若接口使用了[AcceptVerbs]特性限制请求方法,确认已将PUT、DELETE加入允许列表

3. 排查跨域CORS配置

如果是前端跨域调用接口,需确认CORS策略已允许PUT、DELETE请求:
.NET 6+ 版本Program.cs配置示例:

builder.Services.AddCors(options =>
{
    options.AddPolicy("自定义策略名", policy =>
    {
        policy.AllowAnyOrigin()
              .AllowAnyHeader()
              // 明确允许PUT、DELETE,也可直接使用.AllowAnyMethod()允许所有请求方法
              .WithMethods("GET", "POST", "PUT", "DELETE");
    });
});
// 中间件管道需按顺序启用CORS,放在路由匹配之后、授权验证之前
app.UseCors("自定义策略名");

4. 排查服务器请求筛选配置

若项目部署在IIS服务器上:

  1. 进入站点的「请求筛选」功能,查看「HTTP谓词」tab下是否禁用了PUT、DELETE,若存在禁用规则,删除对应规则或新增允许PUT、DELETE的规则
  2. 检查站点处理程序映射中,ExtensionlessUrlHandler-Integrated-4.0的谓词限制是否包含PUT、DELETE,可直接设置为允许所有谓词

5. 排查全局拦截规则

确认项目中是否存在全局Action过滤器、授权过滤器,存在拦截PUT、DELETE请求返回405的逻辑,可临时注释全局过滤器验证是否为此类原因。

内容的提问来源于stack exchange,提问作者user14169749

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:36:05