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

WebAPI启用CORS失败:OPTIONS请求返回404 Not Found

解决WebAPI POST请求OPTIONS 404问题

针对POST接口OPTIONS请求返回404、仅GET接口正常的情况,按以下步骤排查修复:

1. 确认WebAPI路由与Action特性配置

  • 检查WebApiConfig.cs中的路由规则,若Login是控制器自定义Action,确保路由包含action参数:
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
    
  • 给Login方法标注[HttpPost]特性,明确指定请求方法:
    [HttpPost]
    public IHttpActionResult Login(...)
    {
        // 业务逻辑代码
    }
    

2. 配置IIS处理OPTIONS请求

在项目根目录的web.config中,找到<system.webServer>节点,添加或修改以下配置:

  • 启用OPTIONS请求处理程序:
    <system.webServer>
      <handlers>
        <remove name="OPTIONSVerbHandler" />
        <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" resourceType="Unspecified" requireAccess="None" />
      </handlers>
    </system.webServer>
    
  • 补充CORS响应头(若全局CORS配置未生效时使用):
    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*" />
          <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
          <add name="Access-Control-Allow-Headers" value="Content-Type" />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
    

3. 调整WebAPI CORS配置顺序

确保config.EnableCors(cors)的调用在路由映射之前,修改WebApiConfig.cs的Register方法:

public static void Register(HttpConfiguration config)
{
    // 先启用CORS
    var cors = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(cors);

    // 再配置路由
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

4. 局部启用CORS测试

如果全局配置无效,尝试在MemberController或Login方法上直接添加[EnableCors]特性:

[EnableCors(origins: "*", headers: "*", methods: "*")]
public class MemberController : ApiController
{
    [HttpPost]
    public IHttpActionResult Login(...)
    {
        // 业务逻辑代码
    }
}

5. 排查运行环境问题

  • 确认WebAPI项目运行端口26594未被其他进程占用
  • 清理项目后重新生成,重启IIS Express

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:05:11