最近,我部分转换了Asp.Net Web表单应用程序以使用MVC。我们仍然在Web表单(.aspx页面)中包含应用程序的一部分,并使用MVC路由来使用控制器等。 我添加了像
这样的MVC路线routes.MapRoute("Users", "Users/{controller}/{action}/", new { controller = "Timesheet", action = "List" });
有一个名为“Users”的文件夹,其中包含一些我们仍在使用的aspx页面。
当我点击网址http://localhost/Users/
时,我会看到“用户”文件夹内容的目录列表。显然,目录列表优先于MVC URL路由,这可能会通过修改IIS7服务器设置来覆盖。
如何通过代码或web.config更改覆盖此行为?
参考文献:
http://forums.asp.net/t/1251156.aspx/1
http://learn.iis.net/page.aspx/121/iis-7-and-above-modules-overview/
答案 0 :(得分:2)
在RouteCollection上设置RouteExistingFiles = true实现了这一点。它将允许ASP.NET MVC处理甚至现有目录的路由。
答案 1 :(得分:0)
使用此ignoreroute:
routes.IgnoreRoute("{WebPage}.aspx/{*pathInfo}");
列出RegisterRoutes方法
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{WebPage}.aspx/{*pathInfo}");
//routes.MapPageRoute("users", "users", "~/admin/default.aspx");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "home", action = "index", id = UrlParameter.Optional } // Parameter defaults
);
}
这将从路由中排除所有扩展名为“.aspx”的网页。