Todo mundo que está utilizando o roteamento de urls do asp.net já teve vontade de conferir “tim tim por tim tim” como ficaram os roteamentos do website durante ou mesmo após o desenvolvimento do projeto. No meu caso, isso foi ainda mais importante, já que todos os roteamentos são criados dinâmicamente por rotinas de segurança do aplicativo… parecido com isso:

public static void RegisterRoutes(RouteCollection routes)
{
	//método que me retorna do banco de dados todas as rotas cadastradas
	Collection<Menu> rotas = Menu.GetRoutes();

	// percorro toda a lista registrando as urls
	foreach (Menu route in rotas)
	{
		routes.MapPageRoute(route.Url, route.Url, route.PathToRoute);
	}
}

Como viram, quando as rotas não estão descritas no código fonte fica um pouco complicado de desenvolver, pois normalmente você não se lembra de como foram planejados todos os roteamentos. Para conferir as rotas facilmente, eu estou seguindo a dica Phil Haack que escreveu no blog dele um artigo citando o Scott Hanselman’s. Basicamente ele passou o link de um biblioteca (dll) chamada “RouteDebug.dll” (você pode baixar a biblioteca aqui).

Uma vez referenciada no seu projeto, você poderá executar o método RewriteRoutesForTesting(). Este método sobreescreve as requisições feitas no seu projeto e mostra exatamente uma tabela com os roteamentos presentes na RouteTable, destacando qual regra de roteamento que foi obedecida na requisição. O mais legal é que ele mostra numa tabela separada as “variáveis de query string” (aquelas partes da URL que guardam valores, identificadas pelas “{id}” chaves).

route_debug

Porém como ele captura todas as requisições, aconselho criar uma configuração para ativar ou não o RouteDebugger. Algo parecido com isso:

Configuração no Web.Config

<appSettings>
    <add key="RouteDebug" value="True" />
</appSettings>

Teste da variável antes de executar o método

protected void Application_Start(object sender, EventArgs e)
{
	RegisterRoutes(RouteTable.Routes);

	if (Convert.ToBoolean(ConfigurationManager.AppSettings["RouteDebug"]))
		RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}

Desta forma, bastará que você altere o web.config, para ativar o recurso e conferir suas rotas, mesmo num projeto já compilado. Queria ter postado isso há mais tempo, porém nunca é tão tarde que não possa ser publicado, né?!

Grande abraço a todos!