IIS 7.5, vários pools de aplicativos e regravação de URL (403.18 - proibido)

7

Existe alguma maneira de configurar o IIS 7.5 para executar reescritas de URL para diferentes pools de aplicativos no mesmo site sem incorrer em um erro 403.18?

Estamos usando o Helicon ISAPI Rewrite 3 no IIS 6 e funciona como um encanto. O "aplicativo" de nível raiz está sendo executado sob seu próprio pool de aplicativos e, no IIS 6, não temos problemas em fazer reescritas de URL desse pool de aplicativos para qualquer um dos outros quatro pools de aplicativos. Mas quando copio as mesmas informações de configuração do servidor para o IIS 7.5, a URL reescreve a qualquer um dos outros pools de aplicativos com um erro "403.18 - Proibido".

O bit estranho é que o IIS 6 não é (pelo menos até onde eu posso dizer, olhando para o diálogo de configuração do Serviço do site) rodando sob o modo de emulação do IIS 5, então de alguma maneira as reescritas não lançam erros 403.18. Então alguma coisa deve ser diferente ... mas seja o que for, com certeza não consegui descobrir.

Btw, não somos casados com o Helicon ISAPI Rewrite. Se houver outra maneira de preservar nossas regras atuais de configuração de reescrita usando outro módulo ou método, eu ficaria mais do que feliz em usá-lo.

    
por Jerry Hewett 07.01.2011 / 22:19

5 respostas

6

No IIS, você não pode apenas rotear a solicitação de um aplicativo para outro. Aplicativos são isolados, é por isso que você está recebendo erro 403.

Você pode fazer solicitações de proxy usando ISAPI_Rewrite, Ape ou ARR - não importa, porque a solicitação será passada para outro aplicativo usando a solicitação HTTP local. Esta solução é bastante estável, mas você perderá algum desempenho.

O redirecionamento provavelmente não é uma opção aqui, porque ele gerará dois pedidos para o servidor de qualquer maneira, mas como a solicitação será gerada pelo usuário com desempenho de conexão lento, pode cair significativamente.

    
por 23.06.2011 / 17:25
1

Também não é suportado no IIS7 para o novo componente de regravação de URL da Microsoft. O mesmo problema ocorre.

Eu não lembrava que era possível no IIS6 reescrever em pools de aplicativos. Você está fazendo uma reescrita e não um redirecionamento? Um redirecionamento funcionará no IIS7.

Eu perguntaria à Helicon em www.isapirewrite.com. Eles são bons respondendo em seus fóruns. Possivelmente, os módulos ISAPI vivem totalmente no processo w3wp.exe agora e, portanto, não podem enviar sua solicitação para outro pool de aplicativos.

O outro lugar para fazer a pergunta seria no link . A equipe de desenvolvimento do IIS responde a algumas das postagens e pode fornecer detalhes sobre por que até a funcionalidade da ISAPI Rewrite foi alterada ao mover para o IIS7.

    
por 08.01.2011 / 17:38
1

Na verdade, isso não é possível com o URL Rewrite, no entanto, se você realmente quiser, você pode usar o ARR (Application Request Routing) em conjunto e ele funcionará, mas observe que ele estaria realmente fazendo uma nova solicitação para isso, em outras palavras, ele funcionará como um proxy emitindo uma nova solicitação HTTP para si, para isso você precisa reescrever para usar o URL completo, incluindo o nome do host e tudo. Essa é uma grande sobrecarga, portanto, somente se for crítico para o aplicativo.

Claro que, como já foi mencionado por Scott Forsyth, a outra opção é usar um redirecionamento.

    
por 24.02.2011 / 03:34
0

Nós também usamos o ISAPI Rewrite 3 no IIS6, mas quando nos mudamos para o IIS7.5 nós mudamos para o Helicon APE e ele funcionou ainda melhor depois de reconfigurar. Você pode usar os dados em seu banco de dados para reescrever os URLs.

    
por 23.02.2011 / 22:11
-1

Esta é a coisa do closet que eu descobri que se aproxima do mod_rewrite para o IIS.

link

    
por 29.08.2011 / 08:40