1

我想创建一个如下所示的网址:

公告、健康、政策是控制器

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

routes.MapRoute(
 "News",
 "news/{controller}/{action}/{id}",
 new { controller = "Announcement", action = "Index", id = "" }
);

它工作正常,但是,以下两个网址显示相同的页面:

我想阻止第二个网址。

我该怎么办?

谢谢权

4

3 回答 3

10

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

删除这个:

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

该约束将允许默认路由仅匹配控制器 Home 和 Other,但不匹配 Announcement、Health 或 Policy(或其他任何内容)。

于 2009-04-16T05:04:13.453 回答
1

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

于 2009-04-16T05:04:54.437 回答
0

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

http://localhost/新闻/控制器/动作

如果你给这个

http://localhost/controller/action,它不知道要查看哪个应用程序。

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

我正在等待您的回复继续。

于 2009-04-16T05:49:24.687 回答