已配置IIS CORS允许所有方法,但DELETE请求仍遭405拦截求助
排查IIS部署后DELETE请求405错误的方案
1. 禁用IIS的WebDAV模块
WebDAV默认会拦截DELETE、PUT这类请求,是导致405错误的高频原因:
- 打开IIS管理器,找到目标站点,进入模块功能
- 找到
WebDAVModule,右键选择移除 - 也可以直接在web.config中添加配置禁用:
<system.webServer> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="WebDAV" /> </handlers> </system.webServer>
2. 检查WebAPI路由与请求URL匹配
你的DELETE请求末尾携带邮箱(例如/api/users/NewReq@NewReq.com),需确认:
- WebAPI的Action路由是否正确定义,示例:
[HttpDelete("api/users/{email}")] public IActionResult DeleteUser(string email) { // 业务处理逻辑 }
- 确认请求URL中的
@符号是否被正确编码(前端发送时应自动转为%40,未编码可能导致路由解析失败)
3. 验证IIS CORS模块配置完整性
确保web.config中的CORS配置覆盖必要规则,示例:
<system.webServer> <cors enabled="true"> <add origin="*" allowCredentials="true"> <allowHeaders header="*" /> <allowMethods method="GET,HEAD,POST,PUT,DELETE" /> </add> </cors> </system.webServer>
注意:若应用需要携带凭证(如Cookie),allowCredentials需设为true,此时origin不能用*,需指定具体域名;但你当前GET/POST正常,这大概率不是核心问题,可作为补充排查点。
4. 检查WebAPI Action的HTTP方法标记
确认后端处理DELETE请求的Action是否正确标记了[HttpDelete]特性,避免误写为[HttpPost]或其他方法;同时检查参数绑定逻辑,确保邮箱参数能被正确解析。
5. 排查IIS权限与请求筛选
- 确认应用池身份拥有执行DELETE操作所需的权限(如数据库操作、文件读写权限)
- 进入站点的请求筛选功能,点击HTTP方法,确认DELETE在允许列表中
内容的提问来源于stack exchange,提问作者s_om
相关产品推荐
相关产品推荐

