2015-10-17 54 views
0

我有一个既有整合MVC5和Webforms的应用程序。我正在将其从WebForms转换为MVC,一次只能一步。在添加我的控制器,vies等之后,我添加了我的MVC路由,如下所示。但由于某种原因,当我启动应用程序(F5)时,Default.aspx页面仍然会打开,而不是我的主页/索引。我究竟做错了什么?MVC混合仍然调用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 Development Server”时,它会在启动时显示我的Default.aspx页面。但是,当我将其更改为“使用本地IIS Web服务器”时,MVC Url路由就会启动并打开我的Home \ Index页面。谁可以给我解释一下这个?

回答

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 } 
       ); 
     } 
+0

我增加了更多的细节,我的问题。我可以通过更改项目属性中的服务器来重现行为。但我不明白它为什么这样做。 – Ray

+0

您在项目属性 - > Web部分中显示的开始操作是什么? – curiousgeek

+0

开始操作设置为特定页面,但为空。 – Ray