asp.net-core - 404 Not Found in 常规路由
问题描述
我正在使用 VS Code关注 microsoft.com( https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.2&tabs=visual-studio )中的教程和 dotnet CLI 工具。我无法通过 URL 访问此控制器:https://localhost:5001/api/Todo。
namespace TodoApi2.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class TodoContoller : ControllerBase
{
private readonly TodoContext _context;
public TodoContoller(TodoContext context)
{
_context = context;
if (_context.TodoItems.Count() == 0)
{
_context.TodoItems.Add(new TodoItem { Name = "Item1" });
_context.SaveChanges();
}
}
[HttpGet]
public async Task<ActionResult<IEnumerable<TodoItem>>> GetTodoItems()
{
return await _context.TodoItems.ToListAsync();
}
...
但以下工作
namespace TodoApi2.Controllers
{
[Route("api/Todo")]
[ApiController]
public class TodoContoller : ControllerBase
{
private readonly TodoContext _context;
public TodoContoller(TodoContext context)
{
_context = context;
if (_context.TodoItems.Count() == 0)
{
_context.TodoItems.Add(new TodoItem { Name = "Item1" });
_context.SaveChanges();
}
}
[HttpGet]
public async Task<ActionResult<IEnumerable<TodoItem>>> GetTodoItems()
{
return await _context.TodoItems.ToListAsync();
}
...
不知道为什么约定 [控制器] 不起作用。
解决方案
那是因为您的控制器名称TodoContoller
不是TodoController
.
要修复它,请更改您的代码,如下所示:
公共类 TodoContoller : ControllerBase公共类 TodoController : ControllerBase { ...公共 TodoContoller(TodoContext 上下文)公共 TodoController(TodoContext 上下文) { _context = 上下文; if (_context.TodoItems.Count() == 0) { _context.TodoItems.Add(new TodoItem { Name = "Item1" }); _context.SaveChanges(); } } }
推荐阅读
- mongodb - 为什么当前数据库未在“show dbs”中列出?
- unity3d - Dialogflow API V2 统一 SDK
- java - Android Firebase Auth UI:startActivityforResult 方法声明无效,需要返回类型
- react-native - 如果包裹在 Touchable 中,则无法单击 Android 上的 Webview
- python - 如何为多个函数设置标准异常处理程序
- java - Spring Boot Hikari 找不到 DriverClassName
- python-3.x - 如何在熊猫数据帧上迭代 TfidfVectorizer()
- php - 将正则表达式拆分为两个正则表达式:仅整个单词和仅匹配子字符串的单词
- python - 使用不同的按钮调用相同的函数
- html - 如何使用 ng-model 名称访问 ng-minlength 和 ng-maxlength