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

部署至IIS后C# Web API POST请求报405方法不允许(开发模式正常)

解决IIS部署后Web API POST请求405错误的方案

常见原因及处理步骤

1. 禁用IIS的WebDAV模块

IIS默认启用的WebDAV模块会拦截PUT/POST类请求,直接导致405错误,处理方式:

  • 打开IIS管理器,找到目标站点,进入模块功能,右键禁用WebDAVModule
  • 或在站点的web.config中添加配置移除WebDAV相关处理:
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>

2. 明确CORS配置规则

仅全局启用config.EnableCors()可能在部署环境中生效异常,建议指定具体策略:

  • 在WebApiConfig.cs中配置允许的源、方法:
// 生产环境建议替换*为具体业务域名,避免安全风险
var corsPolicy = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(corsPolicy);
  • 检查控制器/Action上是否存在冲突的[DisableCors]特性

3. 修正IIS请求映射配置

确保IIS将API请求正确转发至ASP.NET模块:

  • 检查站点处理程序映射,确认ExtensionlessUrlHandler-Integrated-4.0已启用,且包含POST方法
  • 可在web.config中补充配置:
<system.webServer>
  <handlers>
    <add name="ExtensionlessUrlHandler-Integrated-4.0" 
         path="*." 
         verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" 
         type="System.Web.Handlers.TransferRequestHandler" 
         preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

4. 优化前端请求格式

前端axios请求中无需手动序列化JSON,axios会自动处理,手动序列化可能导致Content-Type匹配问题,修改请求代码:

axios({
  method: 'POST',
  url: URL,
  data: { partyid: '1234567' },
  headers: { 'content-type': 'application/json' }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:45:33