ASP.NET Core 6 MVC使用特性路由运行时遇HTTP 404错误求助
解决ASP.NET Core 6 MVC重定向与404问题
方案1:通过端点配置添加默认重定向
在Startup.cs的Configure方法中,保留原有的特性路由映射,同时添加根路径重定向规则:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 其他中间件配置(如静态文件、异常处理等) app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { // 保留特性路由支持 endpoints.MapControllers(); endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); // 根路径直接重定向到目标地址 endpoints.MapGet("/", context => { context.Response.Redirect("/client/dashboard"); return Task.CompletedTask; }); }); }
方案2:在HomeController中添加默认重定向方法
保留原IndexAsync方法的特性路由,新增一个无路由特性的默认Index方法处理根路径请求:
public class HomeController : Controller { // 保留原特性路由方法 [HttpGet] [Route("/User/Dashboard")] public async Task<IActionResult> IndexAsync() { // 原有业务逻辑 return View(); } // 根路径重定向处理 public IActionResult Index() { return Redirect("/client/dashboard"); } }
方案3:使用URL重写中间件(全局规则)
若需要更灵活的路由规则,可添加URL重写中间件实现全局重定向:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 其他中间件配置 // 配置重写规则:匹配根路径并重定向 var rewriteOptions = new RewriteOptions() .AddRedirect("^$", "/client/dashboard"); app.UseRewriter(rewriteOptions); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }
注意事项
- 确保
/client/dashboard对应的控制器方法已正确配置路由,避免触发新的404错误。 - 若项目使用ASP.NET Core 6顶级语句(Program.cs替代Startup.cs),将上述代码迁移到Program.cs的中间件配置段即可。
内容的提问来源于stack exchange,提问作者tachafine ammel
相关产品推荐
相关产品推荐

