混合Web窗体和MVC的路由错误

时间:2012-01-13 09:05:38

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

我正在使用混合在MVC中的Web窗体Web应用程序。我已按照此页http://www.packtpub.com/article/mixing-aspnet-webforms-and-aspnet-mvc中的说明进行操作,并且在VS2010开发人员服务器中工作正常,但当我尝试将其发布到启用MVC的IIS 6浏览器登录后不会自动重定向到default.aspx,我得到404应用程序根目录错误。

我的Global.asax.cs看起来像这样:

    protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }

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

如果我在Application_Start方法中注释掉对RegisterRoutes的调用,则自动重定向到default.aspx会起作用,但MVC部分会失败。

我需要一些帮助来解决如何设置路由以启用MVC路由时自动重定向到default.aspx。 MVC部分位于特定路径下,如下所示:myserver / applicationname / mvcparts。

Asp.Net MVC 3安装在我发布的开发人员计算机和服务器上。

1 个答案:

答案 0 :(得分:1)

这是因为默认情况下IIS6不支持无扩展名网址。您需要configure it。如果您不使用ASP.NET 4,this is for you。如果你不配置它; IIS6不知道/Home/Index必须与aspnet_isapi过滤器相关联。它甚至不知道这是一个ASP.NET应用程序。这就是为什么在经典的WebForms中,他们在安装.NET时使用与aspnet_isapi过滤器关联的.aspx扩展名。

在集成管道模式下运行时,IIS7 +支持无扩展URL。