访问https://localhost:7110/Home/ShowSearchForm出现HTTP ERROR 404错误求助
问题描述
我在ASP.NET Core项目中编写了如下JokersController控制器代码:
public class JokersController : Controller { private readonly WebApplicationElmiDbContext _context; public JokersController(WebApplicationElmiDbContext context) { _context = context; } // GET: Jokers public async Task<IActionResult> Index() { return _context.Joker != null ? View(await _context.Joker.ToListAsync()) : Problem("Entity set 'WebApplicationElmDbiContext.Joker' is null."); } // GET: Jokers/ShowSearchForm public async Task<IActionResult> ShowSearchForm() { return _context.Joker != null ? View() : Problem("Entity set 'WebApplicationElmDbiContext.Joker' is null."); } }
访问https://localhost:7110/Home/ShowSearchForm时,页面提示“无法找到此本地页面”,报HTTP ERROR 404错误,需排查解决。
排查解决步骤
修正请求URL的控制器路径:
ShowSearchForm方法属于JokersController,而非HomeController,正确请求URL应为https://localhost:7110/Jokers/ShowSearchForm。ASP.NET Core默认路由规则为{controller}/{action}/{id?},URL中的控制器名称需与控制器类名(去掉Controller后缀)一致。检查路由配置:确认
Program.cs中已启用控制器路由:app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");若使用属性路由,需在控制器或方法上添加
[Route]特性,例如在ShowSearchForm方法上添加[HttpGet("ShowSearchForm")],同时在控制器类上添加[Route("[controller]")]。确认视图文件路径:
ShowSearchForm返回View()时,需确保Views/Jokers目录下存在ShowSearchForm.cshtml视图文件。路径或文件名错误可能导致视图未找到(通常会返回特定错误信息,但也可能引发404)。检查控制器访问修饰符:确保
JokersController使用public修饰符,非public的控制器无法被路由系统识别。修正代码拼写错误:代码中
Problem方法内的错误信息写为WebApplicationElmDbiContext,但注入的上下文是WebApplicationElmiDbContext,虽不直接引发404,但建议修正以避免后续排查混淆。
内容的提问来源于stack exchange,提问作者Ahmed Elmi

