2012-10-10 48 views
7

Estoy usando N2Cms y estoy viendo algunos problemas que tengo con él. Tiene un panel de navegación en el lado izquierdo que se carga a través de ajax a medida que expandes el árbol.500 Error interno del servidor IIS7 URL codificada

El código que obtiene el hijo del nodo llama a un archivo ashx con algunos parámetros. Un parámetro es para una ruta y contiene barras en ella. Por esta razón, ha sido codificado.

.../cms/Content/Navigation/LoadTree.ashx?target=preview&selected=%252fhome%252fhelp-and-advice%252f 

he tenido ningún problema con esto en mi servidor de desarrollo (que se ejecuta IIS 7.5), pero cuando se despliega a nuestro servidor de prueba (iis7) la navegación no funciona.

Investigar esto ha demostrado que la URL anterior da un error de 500.

Si i decodificar la url para

.../cms/Content/Navigation/LoadTree.ashx?target=preview&selected=/home/help-and-advice/ 

es que funciona sin problemas.

Desafortunadamente no puedo cambiar el código que genera esto como parte del código fuente de n2cms y supongo que ha sido codificado por un buen motivo.

¿Alguien sabe algo que puedo hacer en mi web.config para permitir parámetros codificados o algo que pueda cambiar en el servidor iis?

EDIT: Así que este enlace parece sugerir que está haciendo esto a propósito como una medida de seguridad. http://msdn.microsoft.com/en-us/library/ee656542.aspx

La solución propuesta es actualizar a .NET 4.0 y añadir lo siguiente al web.config

<configuration> 
<uri> 
    <schemeSettings> 
    <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/> 
    </schemeSettings> 
</uri> 
</configuration> 

Por desgracia esto parece tener ningún efecto.

¿Alguna idea de por qué esto no funciona?

Respuesta

1

Esta podría ser la utilidad URLScan. URL Scan bloquea las URL según las reglas en su archivo de configuración. También tiene su propio archivo de registro, por lo que puede estar seguro al consultar el registro de URLScan.

Realice una búsqueda en google de la ubicación predeterminada de URLSCan.

+0

URLScan parece ser un complemento iis. No creo que lo tengamos instalado. No puedo solucionarlo en los programas para eliminar complementos o las características de Windows. – sianabanana

+0

Marca aquí C: \ Windows \ System32 \ inetsrv \ urlscan o aquí C: \ Windows \ SysWOW64 \ inetsrv \ urlscan. La ubicación depende de si está ejecutando 64 bits. Si urlscan existe en una de esas ubicaciones y hay un subdirectorio "logs", entonces lo está ejecutando. –

+0

Como dije, no está instalado. Esas carpetas no existen y ninguna referencia a urlscan en ningún archivo o carpeta en la máquina. – sianabanana

1

Parece que su url tiene una codificación de 2 html. ¿Hay algún módulo de reescritura de URL activo en su servidor IIS7?

+0

No es que yo sepa. Es una instalación estándar de Windows Web Server 2008 (con iis7). Creo que esta es una "característica" de iis7 ya que una instalación estándar similar con el mismo código en iis7.5 no tiene esta "característica". – sianabanana

0

Bien, estoy llegando a algún lado con esto.

Al tratar de encontrar el error en los registros de IIS y fallar, luego revisando muchas publicaciones sobre solicitudes de rastreo fallidas y sin obtener ningún error en iis, calculé que la solicitud simplemente no llegaba a IIS.

Mirando hacia atrás en el error del servidor, había una pista allí también.
500 Error interno del servidor. La solicitud fue rechazada por el filtro HTTP.

Es el cortafuegos !! Hemos desactivado el filtro HTTP y ahora funciona :)

Ahora necesito investigar qué se suponía que este filtro HTTP nos estaba protegiendo y estamos seguros ahora que lo hemos desactivado.

Cuestiones relacionadas