1

首先让我解释一下,我使用的是托管解决方案,在 IIS 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 文件(确实执行),我可以在不使用简单的 Response.Redirect 的情况下加载 Home 控制器吗?

谢谢你,马修

4

3 回答 3

1

您收到“目录列表被拒绝”的事实意味着 isapi filetr 与 MVC 不匹配。

于 2010-12-22T14:57:32.043 回答
0

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

将默认文档更新为“Default.aspx”之类的内容。您的托管服务提供商应该有一个选项。这是很常见的。

于 2010-11-19T16:32:36.460 回答
0

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

// Disable IIS looking at physical files and directories
RouteTable.Routes.RouteExistingFiles = true;
于 2011-03-07T19:42:57.233 回答