C# 为什么ASP.NET核心MVC中应用了错误的路由?
我正在从事ASP.NET核心MVC项目。它有两条路线:C# 为什么ASP.NET核心MVC中应用了错误的路由?,c#,asp.net,asp.net-mvc,asp.net-core,asp.net-core-mvc,C#,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,我正在从事ASP.NET核心MVC项目。它有两条路线: app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}"); routes.MapRoute( name: "news", template: "News{controller}/{action}"); });
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}");
routes.MapRoute(
name: "news",
template: "News{controller}/{action}");
});
我注意到,在Core2.0框架中,定义特定 最初的路线不适用于上面显示的2条路线。有虫子吗?还是我的代码有问题
获取URL-“/NewsHome/Index”时,它正在调用主控制器操作方法 它应该实际调用新闻之家控制器的索引方法。怎么了 我还提供了《Pro ASP.NET Core MVC 2》一书的摘录 亚当·弗里曼’来说明我的观点。请参阅下文: 出了什么问题,请指导我?改变
routes.MapRoute(
name: "news",
template: "News{controller}/{action}");
到
答案在你发布的截图中。您应该颠倒映射的顺序。在屏幕截图中,它显示了它将如何出错。它的行为与书中所解释的完全一致。只要颠倒路线的顺序。我不是这个意思。我的路由是正确的,但我认为asp.net core的行为有所不同。我不想更改路由的顺序。整个问题都是关于被调用的错误路由。如果我没有弄错的话,正确的路由被调用了:“那么第一个路由,它匹配任何带有零、一或两个段的URL,将始终是被使用的那个。”“this'/NewsHome/Index'是一个两段的URL,然后它调用您的第一个路由。因此,“因此,必须首先定义最具体的路由。”我的问题是,如果路由顺序与我发布的相同,那么url“/NewsHome/Index”应该调用“NewsHome”控制器(基于第一个路由)。但事实并非如此。当应用第二条路由时,它实际上正在调用“主”控制器。为什么?你有一个叫“新闻之家”的实际控制人吗?
routes.MapRoute(
name: "news",
template: "/news/{action}");