MVC hybrid仍然调用default.aspx

时间:2015-10-17 05:09:22

标签: asp.net-mvc webforms

我有一个既集成了MVC5又集成了Webforms的应用程序。我正在将它从WebForms转换为MVC,一步一步。在我添加了控制器,视频等之后,我添加了我的MVC路由,如下所示。但出于某种原因,当我启动应用程序(F5)时,Default.aspx页面仍然打开而不是我的主页/索引。我做错了什么?

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

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
编辑:我只是想出来但不明白为什么。看来,当我转到项目的属性并将服务器设置为“使用Visual Studio开发服务器”时,它会在启动时显示我的Default.aspx页面。但是当我将其更改为“使用本地IIS Web服务器”时,MVC Url路由将启动并打开我的Home \ Index页面。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:0)

只有当我在Application_Start中注释掉路由注册时,我才能重现上述行为(请参阅下面的Global.asax中的注释行)。否则它只是在一个示例webforms和mvc5混合项目中完美地运行。

这是我的Global.asax

void Application_Start(object sender, EventArgs e)
        {
            // Code that runs on application startup
            AreaRegistration.RegisterAllAreas();
            //GlobalConfiguration.Configure(WebApiConfig.Register);
            //RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);            
        }

这是我的RouteConfig

public static void RegisterRoutes(RouteCollection routes)
        {
            var settings = new FriendlyUrlSettings();
            settings.AutoRedirectMode = RedirectMode.Permanent;
            routes.EnableFriendlyUrls(settings);

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new {controller="Home", action = "Index", id = UrlParameter.Optional }
                );
        }