2010-02-28 6 views
5

Sto eseguendo Sitecore 6.1 su Windows 2008, IIS7 e sto cercando di utilizzare il modulo di riscrittura degli URL per eseguire un reindirizzamento. Quando abilito la regola e prendo l'URL che la attiva, ottengo un YSOD. La stessa regola funziona perfettamente su un sito non-sitecore sulla stessa macchina. Secondo la Traccia richiesta non riuscita, il modulo di riscrittura fa la cosa giusta, ma poi Sitecore genera un'eccezione, anche se il reindirizzamento punta a un altro server. Questo è probabilmente il risultato di qualcosa che ho configurato male, ma non riesco proprio a capire perché non funzioni. I dettagli di YSOD sono di seguito.Perché Sitecore genera un'eccezione NullReferenceException quando reindirizzamento a una delle sue pagine?

[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

c'era una soluzione confermata a questo? la mancanza di registrazione nel modulo mi sta causando dolore. – Dann

risposta

3

Sitecore ha il proprio motore per il reindirizzamento dell'URL, quindi alcuni cavi probabilmente si incroceranno qui. Forse è necessario spostare il tuo HttpModule in modo che sia in esecuzione in precedenza nella catena.

+0

La traccia di errore mostra definitivamente la riscrittura che si verifica prima dell'avvio della pipeline Sitecore. Ha ancora senso che le cose stiano accadendo nell'ordine sbagliato? – Abs

+0

Suppongo di no. Ma è interessante che questo modulo Nexus sia il primo modulo registrato da Sitecore (ho appena controllato il mio web.config). Hai provato a rimuoverlo? Non sono sicuro di cosa faccia. – Bryan

+0

OK, Nexus è parte integrante di Sitecore ... non può disabilitarlo. Domanda: cosa succede quando si sfoglia l'URL di destinazione in un browser? Lo stesso errore? Qual è l'URL completo? Ha un'estensione che Sitecore non elaborerà? – Bryan

1

si può ottenere lo stesso errore quando si fa

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

all'interno di codice C#, il modo per risolvere questo problema è quello di utilizzare il sovraccarico:

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

che si concluderà immediatamente la risposta.

Il modulo di riscrittura non sta ovviamente concludendo la richiesta consentendo immediatamente a Sitecore di risolvere questo problema. È possibile risolvere questo problema creando un modulo per gestire i reindirizzamenti o tentando di estendere il modulo di riscrittura degli URL per terminare immediatamente la risposta.

1
+0

Il problema con questa 'correzione' è che se stai usando la nuova opzione URL senza estensione (che rilascia l'estensione .ASPX), non puoi eseguire il progetto in modalità classica. Servirà fino a 404 pagine. – ianpoley

+0

@ianpoley - La cosa divertente è stata, dopo il passaggio al classico, quindi di nuovo a Integrato ora è stato risolto – Dann

Problemi correlati