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

ASP.NET Core 8含ID的PUT/DELETE请求404问题求助

携带ID的PUT/DELETE请求404错误排查方案

先看路由配置的核心问题

绝对路由的坑

你写的[HttpPut("/update/{id}")]是绝对路由,会直接覆盖控制器上的api/[controller]前缀,所以实际生效的请求地址是http://你的域名/update/{id},而不是你可能以为的http://你的域名/api/Users/update/{id},这是最容易导致404的原因。

相对路由的正确用法

你尝试的[HttpPut("{id}")]是相对路由,会和控制器的api/Users前缀拼接,正确的请求地址应该是http://你的域名/api/Users/{id}。如果还是404,按下面的步骤逐一排查:

逐一排查项

  • 检查请求方法和URL拼写:确保Postman里用的是PUT方法,URL里的控制器名(Users)、id值没有拼写错误,且id是整数(和方法参数int id类型匹配,如果你的ID是字符串,要把参数改成string id)
  • 添加路由类型约束:把路由改成[HttpPut("{id:int}")],明确指定id是整数,避免因类型不匹配导致路由不命中
  • 验证请求头和请求体:确保请求头的Content-Type是application/json,请求体是合法的JSON格式——因为你用了[FromBody],如果这两项不对,也可能触发404或者请求被拒绝
  • 查看注册的所有路由:在Program.cs里加一段代码,启动时打印所有路由,确认你的PUT路由是否正确注册:
var app = builder.Build();

// 打印所有路由端点
var endpointDataSource = app.Services.GetRequiredService<EndpointDataSource>();
foreach (var endpoint in endpointDataSource.Endpoints.OfType<RouteEndpoint>())
{
    var httpMethod = endpoint.Metadata.GetMetadata<HttpMethodMetadata>()?.HttpMethods.FirstOrDefault();
    Console.WriteLine($"路由地址: {endpoint.RoutePattern.RawText}, 请求方法: {httpMethod}");
}

app.MapControllers();
app.Run();

启动后看控制台输出,确认你的PUT路由存在,且地址和你请求的一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:18:10