Pergunta

Eu estava planejando usar url roteamento para uma aplicação Web Forms. Mas, depois de ler alguns posts , eu não tenho certeza se é uma abordagem fácil.

É melhor usar a URL Rewrite módulo para formulários web? Mas, é apenas para IIS7. Inicialmente, houve alguma agitação que o roteamento de URL é totalmente dissociado do Asp.Net MVC e que poderia ser usado para formulários web.

gostaríamos de ouvir todas as sugestões ..

Foi útil?

Solução

Há um grande post aqui sobre o diferenças entre os dois de um membro da equipe de IIS.

Uma ressalva eu ??aconselharia é que, para WebForms, você precisa ter cuidado ao usar Routing. Eu escrevi uma implementação de exemplo de como você pode usar roteamento com WebForms que aborda estas questões e esperamos que ajuda a responder à sua pergunta.

Outras dicas

Este é o melhor artigo que encontrei sobre este tópico: IIS URL Reescrevendo e ASP.NET roteamento por Ruslan Yakushev.

IIS URL Reescrevendo

Quando um cliente faz uma solicitação para o servidor Web para um URL particular, o componente de reescrever URL analisa a URL solicitada e muda para uma outra URL diferente no mesmo servidor. O URL-reescrever corridas componentes muito cedo no pipeline de processamento de solicitação, portanto, é capaz de modificar a URL solicitada antes que o servidor Web faz uma decisão sobre qual manipulador de uso para processar o pedido.

IIS URL Reescrevendo

ASP.NET Routing

ASP.NET roteamento é implementado como um módulo de código gerenciado que se conecta ao IIS pipeline de solicitação de processamento na fase de cache Resolve (evento PostResolveRequestCache) e na fase Mapa Handler (PostMapRequestHandler). roteamento ASP.NET é configurado para ser executado para todas as solicitações feitas para o aplicativo Web.

IIS URL Routing

As diferenças entre a reescrita de URL e ASP.NET roteamento:

  1. reescrita de URL é usado para manipular caminhos de URL antes que o pedido é processado pelo servidor Web . O módulo de regravação de URL não sabe nada sobre o manipulador eventualmente processará a URL reescrito. Além disso, o manipulador de solicitação real pode não saber que a URL foi reescrito.
  2. ASP.NET roteamento é usado para enviar uma solicitação para um manipulador com base no caminho URL solicitado . Ao contrário de reescrita de URL, o componente de roteamento sabe sobre manipuladores e seleciona o manipulador que deve gerar uma resposta para a URL solicitada. Você pode pensar em ASP.NET roteamento como um mecanismo manipulador de mapeamento avançado.

Além destas diferenças conceituais, existem algumas diferenças funcionais entre IIS URL reescrever e ASP.NET roteamento:

  1. O módulo de URL-reescrita IIS pode ser usado com qualquer tipo de aplicação Web, que inclui ASP.NET, PHP, ASP e arquivos estáticos. roteamento ASP.NET pode ser usado apenas com aplicativos da Web baseados em .NET Framework.
  2. O módulo de URL-reescrita IIS funciona da mesma maneira, independentemente de modo de pipeline IIS integrado ou clássico é usado para o pool de aplicativos. Para roteamento ASP.NET, é preferível usar o modo de pipeline integrado. ASP.NET roteamento pode funcionar em modo clássico, mas, nesse caso, os URLs de aplicação deve incluir extensões de arquivo ou o aplicativo deve ser configurado para usar "*" mapeamento do manipulador no IIS.
  3. O módulo de URL-reescrita pode fazer reescrever decisões com base em nomes de domínio, cabeçalhos HTTP, e variáveis ??de servidor. Por padrão, ASP.NET roteamento funciona somente com caminhos de URL e com o cabeçalho HTTP-Method.
  4. Além de reescrever, o módulo URL-reescrita pode executar HTTP redirecionamento, códigos de status problema personalizados e abort pedidos. ASP.NET roteamento não executa essas tarefas.
  5. O módulo de URL-reescrita não é extensível na sua versão actual. roteamento ASP.NET é totalmente extensível e personalizável.

Você quer urls formatados para ser uma fábrica para a desova páginas?

ou você quiser fazer o aspx ir embora?

reescrevendo, é para fazer o aspx ir embora, ou apenas para arrumar a url.

Routing, é para olhar para um pedido e determinar qual objeto deve lidar com isso. Eles som semelhante, Phil Haack tem alguns bons artigos sobre o assunto.

em iis6, isapiRewrite, é muito bom

Eu recentemente escrevi meu próprio sistema de reescrita para fazer as URLs em meus sites olhar melhor. Basicamente, você está indo para necessidade de escrever seu próprio IHttpModule e adicioná-lo ao seu web.config para interceptar solicitações de entrada. Você pode então usar o HttpContext.Current.RewritePath para mudar o que você está apontando.

Você também vai querer configurar seu site para usar o aspnet_isapi para tudo .

Você vai descobrir um monte de pequenos problemas ao longo do caminho como tentar trabalhar com páginas que usam "caudas" sobre eles (como por PageMethods), ou pathing de elementos de página e postagens de formulário, mas você vai passar por eles .

Se estiver interessado, eu posso postar um link para o código e você pode verificá-la. Eu trabalhei um monte de problemas fora, já que você possa lê-lo como você vai. Tenho certeza de que há um monte de outras pessoas que tenham feito isso tão bem que podem ser bons recursos também.

Você pode querer verificar para fora minha resposta a esta pergunta : ASP.NET - Construir seu próprio sistema de roteamento . I incluem algumas boas referências para ajudar a construir o seu próprio sistema de roteamento com qualquer um usando a url método ou o novo mecanismo de roteamento que você pode usar que saiu do projeto ASP.NET MVC reescrever.

O projeto Dynamic Data que está disponível com .Net 3.5 mostra SP1 um bom exemplo de uma implementação de roteamento de URL.

Para Reescrever URL no IIS, RIFI trabalha em IIS5, 6, 7. Livre. Fácil. Rápido. Código aberto. Suporte a expressões regulares.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top