使用 MVC URL 路由覆盖目录列表

发布于 2024-12-08 00:13:34 字数 769 浏览 0 评论 0原文

最近,我部分转换了一个 Asp.Net Web 表单应用程序以使用 MVC。我们仍然在 Web 表单(.aspx 页面)中保留部分应用程序,并使用 MVC 路由来处理控制器等。 我添加了一个 MVC 路由,例如

routes.MapRoute("Users", "Users/{controller}/{action}/", new { controller = "Timesheet", action = "List" });

有一个名为“Users”的文件夹,其中包含一些我们仍在使用的 aspx 页面。 当我点击 URL http://localhost/Users/ 时,我得到了“Users”文件夹内容的目录列表。显然,目录列表优先于 MVC url 路由,并且可以通过修改 IIS7 服务器设置来覆盖它。

我如何通过代码或 web.config 更改来覆盖此行为?

参考文献:

http://forums.asp.net/t/1251156.aspx/1

http://learn.iis.net/page.aspx/121/iis-7-and-above-modules-overview/

Recently, I partially converted an Asp.Net web forms application to use MVC. We still have parts of the application in web forms (.aspx pages) and use MVC routing to work with Controllers and such.
I added an MVC route like

routes.MapRoute("Users", "Users/{controller}/{action}/", new { controller = "Timesheet", action = "List" });

There is a folder called "Users" which contain a few aspx pages we still use.
When I hit the URL http://localhost/Users/ I get a directory listing of the contents of the "Users" folder. Apparently, the directory listing takes precedence over MVC url routing and this might be overridden by modifying the IIS7 server settings.

How could I override this behavior, via code or web.config changes?

References:

http://forums.asp.net/t/1251156.aspx/1

http://learn.iis.net/page.aspx/121/iis-7-and-above-modules-overview/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

初心 2024-12-15 00:13:35

使用此忽略路由:

routes.IgnoreRoute("{WebPage}.aspx/{*pathInfo}");

列出 RegisterRoutes 方法

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");                         
            routes.IgnoreRoute("{WebPage}.aspx/{*pathInfo}");            

            //routes.MapPageRoute("users", "users", "~/admin/default.aspx");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "home", action = "index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

这将从路由中排除扩展名为“.aspx”的所有页面。

Use this ignoreroute:

routes.IgnoreRoute("{WebPage}.aspx/{*pathInfo}");

Listing the RegisterRoutes method

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");                         
            routes.IgnoreRoute("{WebPage}.aspx/{*pathInfo}");            

            //routes.MapPageRoute("users", "users", "~/admin/default.aspx");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "home", action = "index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

This would exclude all pages whose extension is ".aspx" from routing.

玩物 2024-12-15 00:13:34

在 RouteCollection 上设置 RouteExistingFiles=true 即可实现此目的。它将允许 ASP.NET MVC 处理现有目录的路由。

Setting RouteExistingFiles=true on the RouteCollection achieves just that. It will allow ASP.NET MVC to handle routes even for existing directories.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文