Perché Sitecore un'eccezione NullReferenceException quando ho reindirizzare ad una delle sue pagine?
-
23-09-2019 - |
Domanda
Io corro Sitecore 6.1 su Windows 2008, IIS7, e sto cercando di utilizzare l'URL Rewrite Module per fare un redirect. Quando ho attivare la regola e ha colpito l'URL che lo attiva, ho un YSOD. La stessa regola funziona perfettamente su un sito non-Sitecore sulla stessa macchina. Secondo la richiesta di traccia non riuscita, il modulo riscrittura fa la sua cosa più che bene, ma poi Sitecore genera un'eccezione, anche se i punti di reindirizzamento a un altro server. Questo è probabilmente il risultato di qualcosa che ho configurato in modo errato, ma non riesco proprio a capire perché non funziona. I dettagli della YSOD sono al di sotto.
[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
Soluzione
Sitecore ha il proprio motore per il reindirizzamento URL, in modo da alcuni fili sono probabilmente sempre attraversato qui. Forse è necessario spostare la vostra HttpModule quindi è in esecuzione in precedenza nella catena.
Altri suggerimenti
Sitecore sostengono di aver risolto questo nella versione 6.2 rev.100831 (Update-4) - http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/KnownIssues%20Recommended/Rewriting%20URLs.aspx
Utilizzare la modalità gasdotto "Classic", piuttosto che "integrato"
È possibile ottenere lo stesso errore quando si fa
Response.Redirect("~/SomeUrl.aspx")
nel 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 è, ovviamente, non finisce immediatamente la richiesta consentendo Sitecore per colpire questo problema. Si potrebbe ovviare a questo problema creando un modulo a che fare con i reindirizzamenti o cercando di estendere l'URL Rewrite Module per terminare immediatamente la risposta.
ho sperimentato questo in caso MultiSite su Sitecore v6.5, vedere la mia risposta qui: Sitecore NullReferenceException su GetBrowserClassString