Asp.Net MVC Core中HomeController的WebApi Http Get接口无法访问
解决ASP.NET Core WebAPI访问localhost/home/Test出现404的问题
兄弟,你这404问题主要是路由配置没到位,我帮你拆解下问题和解决办法:
核心问题:控制器缺少路由基配置
你给Test方法加了[HttpGet("Test")]属性,但这个是相对路径,需要依托控制器的基础路由才能生效。你的HomeController没有添加路由属性,ASP.NET Core没法把/home/Test这个请求映射到对应的方法上。
具体修改步骤
给控制器添加路由属性
给HomeController加上[Route("[controller]")],这样控制器的基础路由就是/home(系统会自动去掉控制器名里的Controller后缀),配合方法上的[HttpGet("Test")],就能匹配/home/Test这个路径了。修改后的代码如下:namespace JB.Controllers { [Route("[controller]")] // 新增控制器路由基配置 public class HomeController : Controller { private readonly IConfiguration _configuration; public HomeController(IConfiguration configuration) { _configuration = configuration; } [AllowAnonymous] [HttpGet("Test")] // 现在会映射到 /home/Test public IEnumerable<string> Test() { return new string[] { "Tvalue1", "Tvalue2" }; } } }检查路由中间件是否启用
打开你的Program.cs(如果是旧版本.NET是Startup.cs),确保在中间件配置里添加了app.MapControllers();——这是启用属性路由的关键,没有它的话,你加的路由属性都不会生效。示例代码片段:var app = builder.Build(); // 其他中间件(比如Swagger、静态文件等)的配置... app.MapControllers(); // 必须添加这一行,启用属性路由 app.Run();修正URL的斜杠问题
你访问的localhost\home\Test里用了反斜杠\,浏览器的URL应该用正斜杠/,改成http://localhost:你的端口号/home/Test(记得替换成你项目实际运行的端口)。
内容的提问来源于stack exchange,提问作者user1034912
相关产品推荐
相关产品推荐

