У меня в файле Global.asax в Application_Start
RouteTable.Routes.MapPageRoute("Level1", "{lvl1}", "~/Routing.aspx");//Any name will do for the aspx page.
RouteTable.Routes.MapPageRoute("Level2", "{lvl1}/{*lvl2}", "~/Routing.aspx");
Затем моя страница Routing.aspx.cs обрабатывает логику того, что произойдет с запросом.В основном я Server.Transfer на aspx-страницу, которая будет отображать запрашиваемую страницу.
Страница Routing.aspx подхватывает любую «несуществующую» страницу.
Надеюсь, это поможет или, по крайней мере, даст вамеще несколько идей.