Como conseguir nomes de arquivos página dinâmica em ASP.NET?
Pergunta
Gostaria que o meu site para criar links motor de busca otimizados para o conteúdo dinâmico (em vez de localizar dados através da querystring). Assim:
mysite/SomeModifiableNname.aspxem vez de
mysite/DynamicContent.aspx?entryID=2345.
Além de um 404 manipulador inteligente que redireciona as solicitações, ou um costume mime-type manipulador no IIS, existe uma boa solução para isso em ASP.NET?
Tendo em mente que o nome do arquivo página deve ser capaz de ser alterado em tempo de execução.
Solução 4
Obrigado por pensamentos de todos. Com as informações fornecidas, me deparei com o que eu penso é a necessidade solução I:
No Global.asax (ou através de um HttpModule), ouvir o evento BeginRequest e aplicar caminho Context.Rewrite lá:
void Application_BeginRequest(object sender, EventArgs e)
{
string fullOrigionalpath = Request.Url.ToString();
if (fullOrigionalpath.ToLower().Contains("/Games".ToLower()))
{
Context.RewritePath("Default.aspx?id=Games");
}
}
E, em seguida, no método OnPreInit da página que irá lidar com essas solicitações, necessidades de caminho de reconfiguração a ser aplicada novamente para que postagens irá funcionar apropriadamente:
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (Request.QueryString["id"] == null)
return;
if (Request.QueryString["id"].ToLower().Equals("games"))
Context.RewritePath("Games", "", "id=Games");
}
A chave que faz este trabalho melhor do que um monte de módulos de URL-reescrita me deparei é que os caminhos podem ser dinâmicos. Ou seja, os URLs criados podem ser orientado a dados.
Outras dicas
Você pode usar um HttpHandler rel , como visto aqui .
este é um tema amplo geralmente referidos como URL reescrita ...
existem várias maneiras de conseguir isso. Eu sugeriria olhar para o módulo Rewrite IIS.
Você provavelmente deve também investigar a URL roteamento capabalities que foram desenvolvidos para MVC e estão disponíveis no ASP.NET 3.51
UPDATE: Eu gostaria de saber mais sobre suas intenções. Essa última frase me confunde.
Eu fiz isso no passado com UrlRewrite.Net. Há também um construído em facilidade para isso em IIS7