Para cualquier URL con un signo más (+) en la URL base (no la cadena de consulta), IIS7 e IIS7.5 (Windows Server 2008 y 2008 R2) no parecen reenviar la URL al controlador predeterminado en una aplicación ASP.NET . Comencé a notar el problema con un controlador HTTP personalizado *.html
pero tengo el mismo problema *.aspx
. IIS6 (Server 2003) no tiene problemas con estas mismas URL.
Para replicar el problema, en un sitio ASP.NET, creé un conjunto de archivos ASPX que hicieron una simple Response.Write con varios nombres:
- test_something.aspx
- test_some + thing.aspx
- test_some thing.aspx
El tercer archivo era una prueba para ver si IIS7 [.5] estaba tratando los símbolos más como espacios (como lo haría en la cadena de consulta); Esto no parece ser el caso. Con todos estos archivos en su lugar, golpear http://somehost/test_some+thing.aspx
o http://somehost/test_some%2bthing.aspx
funcionará bien en IIS6 pero 404 en IIS7 / IIS7.5 antes de llegar a cualquier controlador ASP.NET. ¿Hay alguna configuración en IIS7 / 7.5 que me falta para que "vea" un signo más en la URL sin perder la extensión final utilizada para determinar un controlador HTTP?
\+
?Respuestas:
Después de buscar más combinaciones de IIS y más, parece que IIS7 [.5] está configurado para rechazar las URL con un signo más de forma predeterminada por temor al uso de ese carácter; sin embargo, ese símbolo todavía está permitido en la cadena de consulta. La solución es alterar el atributo requestFiltering predeterminado
<system><webServer><security><requestFiltering>
para permitir caracteres doblemente codificados con una llamada de línea de comando (en última instancia, modificando su ASP.NET web.config):Esto puede ser un poco más peligroso de lo que uno prefiere estar con su sitio web, pero no parece haber una forma de ser más específico de lo que permite una manta. Las advertencias se referían a la falta de coincidencia que podría ocurrir entre el uso de un signo más en una URL y su traducción típica como espacio. Parece que la única otra alternativa es dejar de usar más caracteres en sus URL.
fuente
Acabo de descubrir cómo hacer una regla de reescritura para convencer a IIS7 de que asigne ventajas a espacios en las URL. En mi caso, era para mantener funcionando los marcadores o hipervínculos heredados.
Vea mi publicación de blog para más detalles y referencias.
fuente