Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么ASP.NET核心MVC中应用了错误的路由?_C#_Asp.net_Asp.net Mvc_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 为什么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}"); });

我正在从事ASP.NET核心MVC项目。它有两条路线:

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}");