我的应用程序主要是一个ASP.NET应用程序,我正在添加一个MVC部分。
我的Default.aspx(没有代码隐藏)页面有一个简单的Response.Redirect到一个StartPage.aspx页面但由于某种原因MVC接管并且我没有进入StartPage.aspx页面。相反,我被路由到我的第一个也是唯一的MVC部分,这是我在global.asax.cs页面(专辑)中注册的注册路线。
有没有办法告诉MVC将我的请求留给根“/”作为我的IIS 7默认文档...在这种情况下Default.aspx?
这就是我的RegisterRoutes:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Albums","{controller}/{action}/{id}",
new { controller = "Albums", action = "Index", id = "" });
答案 0 :(得分:7)
如果从那里的第二条路线中删除默认控制器,它将不再与“/”匹配,路由将忽略对“/”的请求,将它们留给通常的ASP.Net管道来处理
因此,请将您的路线更改为:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Albums","{controller}/{action}/{id}",
new { action = "Index", id = "" });
那应该可以解决你的问题!
答案 1 :(得分:1)
IIS正在提供default.aspx页面,因为它是默认文档。 MVC会 让default.aspx页面处理请求,如果它意识到请求是针对default.aspx的(例如“http://foo.com/default.aspx”)。虽然在这种情况下(“http://foo.com”)它没有重新定义,所以你可以在默认路由之前添加它以实现你的目标
// ignore "/"
routes.IgnoreRoute("");
// default route
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index",
id = UrlParameter.Optional } // Parameter defaults
);
答案 2 :(得分:0)
您可以告诉MVC忽略Default.aspx,如下所示:
routes.IgnoreRoute("Default.aspx");