Postman 收到简单的 ASP.NET Core Web API 的 404 错误
Posted
技术标签:
【中文标题】Postman 收到简单的 ASP.NET Core Web API 的 404 错误【英文标题】:Postman getting 404 error for simple ASP.NET Core Web API 【发布时间】:2018-12-29 20:27:28 【问题描述】:我已经建立了一个非常简单的 ASP.NET Core 2.1 Web API 项目,并创建了一个使用 EF Core 获取实体的简单控制器。
问题是当尝试使用 Postman 访问 GetEntities 方法时,响应是 404 错误。我在以下 URL 上使用了 HTTP GET 方法。
https://localhost:44311/api/entities
响应正文包含消息<pre>Cannot GET /api/entities</pre>
。
为什么 Postman 收到此路由的 404 错误?
EntitiesController.cs
namespace MyProject.Controllers
[Route("api/controller")]
public class EntitiesController : Controller
private readonly ApplicationDbContext dbContext;
public EntitiesController(ApplicationDbContext _dbContext)
this.dbContext = _dbContext;
[HttpGet]
public IActionResult GetEntities()
var result = dbContext.Entities.ToListAsync();
return Ok(result);
【问题讨论】:
【参考方案1】:确保控制器文件名和类名正确,后缀为“Controller”,如UsersController.cs
【讨论】:
【参考方案2】:您的路线是“api/controller”,而不是“api/entities”。您需要在“控制器”周围加上方括号以获得所需的效果 - "api/[controller]"
。
【讨论】:
【参考方案3】:为什么 Postman 收到此路由的 404 错误?
问题是控制器上的路由模板中缺少控制器令牌[controller]
,导致路由被硬编码为api/controller
。
这意味着在请求 api/entities 时,它在技术上并不存在,因此在请求时 404 Not Found。
更新控制器上的路由模板。
[Route("api/[controller]")]
public class EntitiesController : Controller
private readonly ApplicationDbContext dbContext;
public EntitiesController(ApplicationDbContext _dbContext)
this.dbContext = _dbContext;
//GET api/entities
[HttpGet]
public async Task<IActionResult> GetEntities()
var result = await dbContext.Entities.ToListAsync();
return Ok(result);
参考Routing to controller actions in ASP.NET Core : Token replacement in route templates ([controller], [action], [area])
【讨论】:
以上是关于Postman 收到简单的 ASP.NET Core Web API 的 404 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Postman 进行 ASP.NET Web API 授权
ASP.NET 核心 blazor webassembly 为 Identity Server 4 Postman 测试获取令牌
使用 Postman 向 Asp.net Core webapi 发送 PATCH 时出错
如何使用 Postman 使用 cookie 身份验证测试 ASP.NET Core Web API?
如何在 IdentityServer ASP.NET Core 中使用 Postman 使用 AntiForgeryToken 调用 API