ASP.NET MVC路由配置求助:无App_Start文件夹且路由不生效
ASP.NET MVC路由配置问题解决指南
1. 先明确项目类型差异
你创建的是ASP.NET Core MVC项目,而非传统ASP.NET MVC(Framework版本),二者路由配置逻辑完全不同:
- 传统MVC依赖
App_Start/RouteConfig.cs,使用RouteCollection和IgnoreRoute方法 - ASP.NET Core MVC的路由统一在
Program.cs中配置,不存在RouteConfig这套结构
2. 修复Program.cs路由不生效问题
你当前的路由顺序错误,路由匹配遵循从上到下优先匹配原则,默认路由(default)放在前面会拦截所有请求,导致自定义的Read路由无法触发。调整顺序,将自定义路由放在默认路由之前:
// 自定义路由优先匹配 app.MapControllerRoute( name: "Read", pattern: "{controller=Read}/{action=Welcome}/{id?}"); // 默认路由作为兜底 app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
调整后,访问根路径会默认跳转至Read/Welcome,其他控制器请求则走默认路由规则。
3. 替代传统的IgnoreRoute方法
ASP.NET Core中没有routes.IgnoreRoute,若要忽略.axd这类请求,可在Program.cs中添加以下代码:
// 拦截并忽略.axd结尾的请求 app.Use(async (context, next) => { if (context.Request.Path.Value.EndsWith(".axd")) { context.Response.StatusCode = 404; return; } await next(); });
4. 删除自行创建的RouteConfig文件
ASP.NET Core不兼容System.Web.Mvc、RouteCollection等传统MVC命名空间,你创建的RouteConfig文件会因引用这些API报错,直接删除即可,所有路由逻辑都在Program.cs中实现。
内容的提问来源于stack exchange,提问作者Shekhar lohach
相关产品推荐
相关产品推荐

