【问题标题】:Override directory listing with MVC URL routing使用 MVC URL 路由覆盖目录列表
【发布时间】:2011-11-30 02:49:09
【问题描述】:

最近,我将一个 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/ 时,我会得到一个“用户”文件夹内容的目录列表。显然,目录列表优先于 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/

【问题讨论】:

标签: asp.net-mvc webforms asp.net-mvc-routing


【解决方案1】:

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

【讨论】:

【解决方案2】:

使用这个忽略路由:

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”的所有页面。

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 2013-08-06
    • 1970-01-01
    • 2015-06-24
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多