ASP.NET Core 3.1访问UserRoles视图出现404错误求助
解决ASP.NET Web应用访问视图404错误的方案
问题原因
你当前的Startup.cs仅配置了API控制器的属性路由(MapControllers())和Razor页面路由(MapRazorPages()),但缺少MVC控制器的路由映射规则。返回视图的UserRolesController属于MVC控制器,需要对应的路由配置才能被正确解析。
修复方案
1. 确认控制器定义
确保UserRolesController继承自Controller(而非API控制器用的ControllerBase),并包含返回视图的Index动作:
public class UserRolesController : Controller { public IActionResult Index() { return View(); } }
2. 配置MVC路由
修改Startup.cs中UseEndpoints的配置,添加MVC默认路由:
app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); // 添加MVC默认路由规则 endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); // 若需保留API控制器的属性路由,可保留此行 endpoints.MapControllers(); });
如果偏好使用属性路由,也可以直接在控制器和动作上添加[Route]特性:
[Route("UserRoles")] public class UserRolesController : Controller { [Route("")] // 匹配访问路径/UserRoles [Route("Index")] // 匹配访问路径/UserRoles/Index public IActionResult Index() { return View(); } }
这种情况下无需修改路由端点配置,保留endpoints.MapControllers()即可,但需确保控制器继承自Controller。
3. 验证视图文件配置
检查Views/UserRoles/Index.cshtml的生成操作是否设置为Content(右键文件→属性→生成操作),确保文件能被项目正确识别。
4. 重启项目
清理项目后重新生成并启动,再次访问localhost:5001/UserRoles即可。
内容的提问来源于stack exchange,提问作者SoftwareDveloper
相关产品推荐
相关产品推荐

