开发者

Override directory listing with MVC URL routing

Recently, I partially converted an Asp.Net web forms application to use MVC. We still have parts of the application in web forms (.aspx pages) and use MVC routing to work with Controllers and such. I added an MVC route like

routes.MapRoute("Users", "Users/{controller}/{action}/", new { controller = "Timesheet", action = "List" });

There is a folder called "Users" which contain a few aspx pages we still use. When I hit the URL http://localhost/Users/ I get a directory listing of the contents of the "Users" folder. Apparently, the directory listing takes precedence over MVC url routing and this might be overridden by modifying the IIS7 server settings.

How could I override this behavior, via code or web.config changes?

References:

http://forums.asp.net/t/1251156.aspx/1

开发者_如何学Gohttp://learn.iis.net/page.aspx/121/iis-7-and-above-modules-overview/


Setting RouteExistingFiles=true on the RouteCollection achieves just that. It will allow ASP.NET MVC to handle routes even for existing directories.


Use this ignoreroute:

routes.IgnoreRoute("{WebPage}.aspx/{*pathInfo}");

Listing the RegisterRoutes method

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
            );

        }

This would exclude all pages whose extension is ".aspx" from routing.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜