route template:
routes.MapRoute("IndexPage",
"feed/{page}.html",
new { controller = "User", action = "Index" }
);
请求地址:http://www.abc.com/feed/2.html
,无法匹配上述路由。
SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
已经添加了。
请问是什么原因?
定位问题的步骤:首先受到 aspnetcore 2.1 升级文档的启发,先从sln
中移出了Web
项目,然后删除了该项目下所有的文件,使用dotnet new mvc
新建一个项目,添加路由 feed/{page}.html
,测试结果是可以正常匹配的。
于是,逐步恢复原来的内容,先是 csproj
中的引用,结果引用一恢复,就无法匹配了,接下来一步一步的缩小范围,最后定位到是由于引用了一个内部的 nuget
造成的问题,删除这个引用即可正常匹配了。
我用asp.net core 2.1新建了一个mvc项目,测试上面的路由是可以正常工作的
app.UseMvc(routes =>
{
routes.MapRoute("IndexPage",
"feed/{page}.html",
new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
如果使用了razor page,这里的{page}
会与razor page的路由冲突