Principais benefícios:
Mascarar uma URL, torna-la mais amigável, legível, informativa.
Melhorar a indexação por buscadores, como Google.
E de certo modo ate evitar SQL Injection.
Uma URL assim:
/exemplo.aspx?id=1,
não me diz nada, agora uma assim:
/exemplos/criar-urls-mais-amigaveis-usando-o-global.asax
já fica bem melhor.
Global.asax
void Application_BeginRequest(Object sender, EventArgs e)
{
HttpContext httpContext = HttpContext.Current;
string sDefaultPath = Context.Request.Path;
//Uma forma bem basica
switch (sDefaultPath.ToLower())
{
case "/home.aspx": //URL do browser
httpContext.RewritePath("/default.aspx?id=1"); // URL real
break;
case "/localizacao.aspx":
httpContext.RewritePath("/default.aspx?id=2");
break;
case "/contato.aspx":
httpContext.RewritePath("/default.aspx?id=3");
break;
}
/*Uma forma um pouco mais robusta,
* por exemplo, se tiver uma pagina unica para produtos,
* a extrutura da URL ficara assim:
* /produtos/id do produto/nome do produto .aspx
* ex de URL: www.site.com.br/produtos/1/nome-do-produto.aspx */
string[] arrDefaultPath = sDefaultPath.Split('/');
//Verificando se existe pelo menos 2 "/" (/produtos/idDoProduto)
if (arrDefaultPath.Length > 2)
{
//Se depois da primeira "/" for produtos
if (arrDefaultPath[1] == "produtos")
{
httpContext.RewritePath("/produtos.aspx?id=" + arrDefaultPath[2]);
}
}
}
Download do exemplo