Asp.net mvc asp.net mvc url路由-子文件夹名称

Asp.net mvc asp.net mvc url路由-子文件夹名称,asp.net-mvc,url-routing,Asp.net Mvc,Url Routing,我想创建一个url,如下所示: 通知、运行状况和策略是控制器 因此,我制作了一个新的url路线图,如下所示: routes.MapRoute( "News", "news/{controller}/{action}/{id}", new { controller = "Announcement", action = "Index", id = "" } ); 它工作正常,但以下两个URL显示相同的页面: 我想阻止第二个url 我该怎么办 谢谢 Kwon如果仍设置了默认路

我想创建一个url,如下所示:

通知、运行状况和策略是控制器

因此,我制作了一个新的url路线图,如下所示:

routes.MapRoute(
 "News",
 "news/{controller}/{action}/{id}",
 new { controller = "Announcement", action = "Index", id = "" }
);
它工作正常,但以下两个URL显示相同的页面:

我想阻止第二个url

我该怎么办

谢谢
Kwon

如果仍设置了默认路由,则需要删除它或添加路由约束,使其与新闻路径不匹配

删除此项:

routes.MapRoute( "Default",
                 "{controller}/{action}/{id}",
                 new { controller = "Home", action = "Index", id = "" } );
或添加约束:

routes.MapRoute( "Default",
                 "{controller}/{action}/{id}",
                 new { controller = "Home", action = "Index", id = "" },
                 new { controller = "(Home|Other)" } );

该约束将允许默认路由仅匹配主控制器和其他控制器,而不匹配通知、运行状况或策略(或其他相关内容)

如果仍设置了默认路由,则需要删除它或添加路由约束,使其与新闻路径不匹配

删除此项:

routes.MapRoute( "Default",
                 "{controller}/{action}/{id}",
                 new { controller = "Home", action = "Index", id = "" } );
或添加约束:

routes.MapRoute( "Default",
                 "{controller}/{action}/{id}",
                 new { controller = "Home", action = "Index", id = "" },
                 new { controller = "(Home|Other)" } );

该约束将允许默认路由仅匹配主控制器和其他控制器,而不匹配通知、运行状况或策略(或其他相关内容)

如果存在任何默认路由映射,则将其移动到映射的末尾。如果没有帮助,那么您可以尝试。

如果有任何默认路由映射,请将其移动到映射的末尾。如果这没有帮助,那么您可以尝试。

从逻辑上讲,第二个url不应该起作用。因为news是您的应用程序名,它托管在IIS中,我想您可能已经将其放在默认网站中了。因此,如果您正在访问应用程序,URL将始终

新闻/controller/action

如果你给我这个

,它不知道要查看哪个应用程序

我建议你创建一个虚拟目录“新闻”,如果你还没有创建一个,然后在那里发布所有内容。 还要确保尚未在Inetpub\wwwroot\目录中发布应用程序文件


我正在等待您的答复。从逻辑上讲,第二个url不应该工作。因为news是您的应用程序名,它托管在IIS中,我想您可能已经将其放在默认网站中了。因此,如果您正在访问应用程序,URL将始终

新闻/controller/action

如果你给我这个

,它不知道要查看哪个应用程序

我建议你创建一个虚拟目录“新闻”,如果你还没有创建一个,然后在那里发布所有内容。 还要确保尚未在Inetpub\wwwroot\目录中发布应用程序文件


我正在等待您的答复。

所以发生的事情是第一个URL在您的自定义路由上匹配,而第二个URL在默认路由上匹配。@Graphain--这是我的怀疑,但是如果不看完整的代码,就很难知道。@kwon--“Other”只是另一个控制器的示例,因为我不知道您的控制器的名称。如果你除了“新闻”中的控制器没有其他控制器,那么你真的根本不需要“默认”路由;很有道理!因此,发生的情况是第一个URL在自定义路由上匹配,而第二个URL在默认路由上匹配。@Graphain--这是我的怀疑,但如果看不到完整的代码,很难知道。@kwon--“Other”只是另一个控制器的示例,因为我不知道您的控制器的名称。如果你除了“新闻”中的控制器没有其他控制器,那么你真的根本不需要“默认”路由;很有道理!