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

ASP.NET Core 3.1 Web API控制器中HTTP Post Action无法触发求助

问题排查与解决思路

核心问题:终端中间件拦截请求

你的Startup.cs中,app.Run被放在了app.UseEndpoints之后,而app.Run是终端中间件——它会处理所有到达该位置的请求,直接返回响应,不会将请求传递给后续的中间件(包括控制器路由系统)。这就是为什么你的控制器方法永远不会被触发,请求直接返回了Planificador API iniciada。

解决方法

直接移除app.Run(context => context.Response.WriteAsync("Planificador API iniciada"));这一行代码。如果需要保留默认的根路径响应,可将其移至app.UseRouting()之前,但对于API项目来说,通常不需要这个全局响应。

其他排查验证点

  1. 确认请求URL正确性
    正确的请求地址应为:POST https://<你的主机地址>/api/Planning/SaveTest
    注意控制器名称是Planning(对应[controller]占位符),方法名是SaveTest。

  2. 检查请求体格式
    在Postman中需选择raw -> JSON格式,传入符合TestData结构的JSON数据,示例:

    {
      "Id": 1,
      "Name": "测试数据"
    }
    

    若格式不匹配,[FromBody]无法绑定数据,也可能导致请求异常。

  3. 验证CORS策略配置
    你使用了app.UseCors("default"),需确保在ConfigureServices方法中已正确注册该策略:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        // 注册CORS策略
        services.AddCors(options =>
        {
            options.AddPolicy("default", policy =>
            {
                policy.AllowAnyOrigin()
                      .AllowAnyHeader()
                      .AllowAnyMethod();
            });
        });
    }
    

    若策略未注册,CORS验证失败会导致请求被拦截。

  4. 临时排除认证/授权影响
    若你尚未配置认证系统,可暂时注释app.UseAuthentication();和app.UseAuthorization();,测试请求是否能进入控制器,排除认证中间件的拦截问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:40:46