Asp.Net Core 2新建应用遇RouteCreationException路由创建错误求助
解决ASP.NET Core 2路由创建错误问题
嗨,我来帮你排查这个问题!你遇到的RouteCreationException通常和路由配置、控制器存在性或者中间件顺序有关,咱们一步步来解决:
首先检查路由模板语法
错误提示里的路由模板是{controller=Home}/{action=Index}/{id=?},这里的{id=?}是错误的写法!ASP.NET Core路由里,可选参数的正确格式是{id?}(问号直接跟在参数名后面),而不是{id=?}。如果你的实际代码里不小心写成了后者,赶紧改成{id?},这是最常见的触发这个错误的原因。确认Home控制器存在且正确
路由默认指向Home控制器的Index动作,如果你项目里还没创建HomeController,或者控制器里没有Index方法,路由找不到对应的目标也会报错。你需要确保有这样的控制器类:using Microsoft.AspNetCore.Mvc; public class HomeController : Controller { public IActionResult Index() { return Content("Hello from Home Index!"); // 或者返回View()都可以 } }调整中间件顺序
看你的Configure方法代码,app.UseMvc()之后调用了app.Run()——Run是终端中间件,会拦截所有到达它的请求,这会导致你的MVC路由永远不会被执行!虽然这不是路由创建错误的直接原因,但会让你的路由配置完全没用,所以建议直接移除app.Run(async (context) => { ... })这段代码,让MVC路由来处理请求。
修改后的Configure方法应该是这样的:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}" ); }); }
按照上面的步骤排查后,应该就能解决这个路由创建错误啦!
内容的提问来源于stack exchange,提问作者Sibeesh Venu
相关产品推荐
相关产品推荐

