代码之家  ›  专栏  ›  技术社区  ›  Matthew

使用ASP.NET MVC2,IIS 6不转发空路由

  •  1
  • Matthew  · 技术社区  · 15 年前

    首先让我解释一下,我使用的是托管解决方案,在I is 6的配置和设置方面我无能为力。

    我有MVC2工作到一定程度,我使用以下Global.asax代码:

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            routes.MapRoute(
                "Default",
                "{controller}.aspx/{action}/{id}",
                new { action = "Index", id = "" }
            );
    
            routes.MapRoute(
                "Root",
                "",
                new { controller = "Default", action = "Index", id = "" }
            );
        }
    

    在第一个路由中,我必须指定{controller}.aspx,因为IIS 6不能执行非aspx代码(或者类似的代码,不太确定)。

    这是好的,以下工作: hxxp://mysite.com/home.aspx,hxxp://mysite.com/projects.aspx,hxxp://mysite.com/contact.aspx

    他们都是控制者,我也可以执行他们受人尊敬的行动。

    问题是我不能正确地创建一个空URL(即hxxp://mysite.com/),它会给我一个“拒绝目录列表”错误。

    我的问题是,在根目录下有一个default.aspx文件(它确实执行),我可以在不使用简单响应的情况下加载主控制器。重定向吗?

    谢谢您, 马修

    3 回复  |  直到 15 年前
        1
  •  1
  •   Martino    15 年前

    您得到的“目录列表被拒绝”意味着isapi文件tr与使用MVC不匹配。

        2
  •  0
  •   Hector Correa    15 年前

    您得到的“目录列表被拒绝”意味着您没有默认文档,因此服务器试图显示根文件夹上的文件列表。

    将默认文档更新为“Default.aspx”。你的主机提供商应该有这个选择。这很常见。

        3
  •  0
  •   arjan    15 年前

    你可以在IIS6和IIS7上禁用此行为

    // Disable IIS looking at physical files and directories
    RouteTable.Routes.RouteExistingFiles = true;
    
    推荐文章