ASP.NET Core如何配置端点路由?接口访问报错该如何解决?
问题原因与解决方案
核心错误原因
你访问的端点路径与实际路由规则不匹配:
你在StudentController类上定义的路由模板为[Route("api/[controller]/[action]")],其中两个占位符的替换规则如下:
[controller]:自动替换为控制器类名去掉Controller后缀的内容,这里对应Student[action]:自动替换为Action的名称,你通过[ActionName("GetData")]指定了当前Action的名称为GetData
所以这个接口的正确完整路径是localhost:5001/api/Student/GetData,你之前访问的路径缺少了/Student段,因此返回错误码。
关于Startup配置的说明
你当前Startup.cs里的endpoints.MapControllers()配置已经完全满足需求,不需要额外添加其他路由规则。这个配置会让ASP.NET Core自动读取控制器、Action上的路由特性完成请求匹配,不需要额外做全局路由映射,除非你有特殊的统一路由规则需求。
可选调整方案
如果你确实需要用localhost:5001/api/GetData路径访问接口,可以任选以下一种修改方式:
- 修改控制器层级路由模板:将类上的
[Route("api/[controller]/[action]")]改为[Route("api/[action]")],去掉控制器名占位符,所有该控制器下的接口都会自动省略控制器名段 - 为单个Action覆盖路由:在
GetData方法上添加特性[HttpPost("/api/GetData")],路由路径开头加/会忽略控制器层级的路由模板,直接使用当前定义的路径匹配
查看ASP.NET Core版本的方法
打开项目根目录下后缀为.csproj的文件,找到TargetFramework节点,节点值中net后面的数字就是你使用的版本,比如<TargetFramework>net8.0</TargetFramework>对应ASP.NET Core 8.0。
内容的提问来源于stack exchange,提问作者Jouzu Ridzky
相关产品推荐
相关产品推荐

