Para qualquer URL com um sinal de adição (+) na URL base (não na string de consulta), o IIS7 e o IIS7.5 (Windows Server 2008 e 2008 R2) não parecem encaminhar a URL para o manipulador padrão em um aplicativo ASP.NET . Comecei a perceber o problema com um manipulador HTTP personalizado, *.html
mas tenho o mesmo problema *.aspx
. O IIS6 (Server 2003) não tem problemas com esses mesmos URLs.
Para replicar o problema, em um site ASP.NET, criei um conjunto de arquivos ASPX que executavam um Response.Write simples com vários nomes:
- test_something.aspx
- test_some + thing.aspx
- test_some thing.aspx
O terceiro arquivo foi um teste para verificar se o IIS7 [.5] estava tratando símbolos mais como espaços (como faria na string de consulta); isso não parece ser o caso. Com todos esses arquivos no lugar, pressione http://somehost/test_some+thing.aspx
ou http://somehost/test_some%2bthing.aspx
funcionará bem no IIS6, mas 404 no IIS7 / IIS7.5 antes de chegar a qualquer manipulador do ASP.NET. Há alguma configuração no IIS7 / 7.5 que falta para que ele "veja" um sinal de mais na URL sem perder a extensão final usada para determinar um manipulador HTTP?
\+
?Respostas:
Depois de pesquisar por mais combinações do IIS e mais, parece que o IIS7 [.5] está configurado para rejeitar URLs com um sinal de mais por padrão, devido a algum receio do uso desse caractere; esse símbolo ainda é permitido na string de consulta. A solução é alterar o padrão do atributo requestFiltering
<system><webServer><security><requestFiltering>
para permitir caracteres duplamente codificados com uma chamada de linha de comando (modificando finalmente o seu asp.net web.config):Isso pode ser um pouco mais perigoso do que se prefere no site, mas não parecia haver uma maneira de ser mais específico do que o permitido por um cobertor. Os avisos diziam respeito à incompatibilidade que poderia ocorrer entre o uso de um plus em um URL e sua tradução típica como espaço. Parece que a única outra alternativa é parar de usar mais caracteres nos seus URLs.
fonte
Acabei de descobrir como fazer uma regra de reescrita para convencer o IIS7 a mapear vantagens para espaços em URLs. No meu caso, era para manter favoritos ou hiperlinks legados funcionando.
Veja meu blog para mais detalhes e referências.
fonte