2010-02-28 15 views
5

Estoy ejecutando Sitecore 6.1 en Windows 2008, IIS7, y estoy tratando de usar el módulo de reescritura de URL para hacer un redireccionamiento. Cuando habilito la regla y presiono la URL que la desencadena, obtengo un YSOD. La misma regla funciona perfectamente en un sitio sin sitecore en la misma máquina. De acuerdo con el seguimiento de solicitud fallida, el módulo de reescritura funciona perfectamente, pero luego Sitecore arroja una excepción, incluso si la redirección apunta a otro servidor. Esto es probablemente el resultado de algo que he configurado mal, pero simplemente no puedo entender por qué no funciona. Los detalles del YSOD están debajo.¿Por qué Sitecore lanza una excepción NullReferenceException cuando me redirecciona a una de sus páginas?

[NullReferenceException: Object reference not set to an instance of an object.] 
    Sitecore.Nexus.Web.HttpModule.(Object sender, EventArgs e) +273 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 
+1

¿hubo alguna solución confirmada para esto? la falta de registro en el módulo me está causando dolor. – Dann

Respuesta

3

Sitecore tiene su propio motor para la redirección de URL, por lo que algunos cables están consiguiendo probablemente cruzó aquí. Es posible que necesite mover su HttpModule para que se ejecute antes en la cadena.

+0

La traza de falla definitivamente muestra la reescritura antes de que comience la interconexión de Sitecore. ¿Todavía tiene sentido que las cosas estén sucediendo en el orden equivocado? – Abs

+0

Supongo que no. Pero es interesante que este módulo Nexus sea el primer módulo registrado de Sitecore (acabo de consultar mi web.config). ¿Has intentado simplemente eliminarlo? No estoy seguro de lo que hace. – Bryan

+0

OK, Nexus es una parte integral de Sitecore ... no puede deshabilitarlo. Pregunta: ¿Qué sucede cuando solo navegas por la URL objetivo en un navegador? ¿Mismo error? ¿Cuál es la URL completa? ¿Tiene una extensión que Sitecore no procesará? – Bryan

1

, usted puede obtener el mismo error al hacer

Response.Redirect("~/SomeUrl.aspx") 

dentro de código C#, la manera de solucionar este problema es utilizar la sobrecarga:

Response.Redirect("~/SomeUrl.aspx", true) 

que pondrá fin a la respuesta de inmediato.

El módulo de reescritura obviamente no está finalizando la solicitud de forma inmediata, lo que permite a Sitecore solucionar este problema. Podría solucionar este problema creando un módulo para tratar los redireccionamientos o tratando de extender el Módulo de reescritura de URL para finalizar la respuesta de inmediato.

1
+0

El problema con esta "solución" es que si está utilizando la nueva opción de URL sin extensión (que elimina la extensión .ASPX), no puede ejecutar el proyecto en modo clásico. Servirá hasta 404 páginas. – ianpoley

+0

@ianpoley - Lo curioso fue que, después de pasar al clásico, luego de vuelta a Integrated esto ya se ha corregido – Dann

Cuestiones relacionadas