Почему Sitecore генерирует исключение NullReferenceException, когда я перенаправляюсь на одну из его страниц?

Я запускаю Sitecore 6.1 в Windows 2008, IIS7 и пытаюсь использовать модуль перезаписи URL для перенаправления. Когда я включаю правило и нажимаю URL-адрес, который его запускает, я получаю YSOD. Это же правило отлично работает на сайте без sitecore на той же машине. Согласно Failed Request Trace, модуль перезаписи отлично справляется со своей задачей, но затем Sitecore выдает исключение, даже если перенаправление указывает на другой сервер. Вероятно, это результат того, что я что-то неправильно настроил, но я просто не могу понять, почему это не работает. Подробности из YSOD ниже.

[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  

person Abs    schedule 28.02.2010    source источник
comment
было ли подтвержденное решение для этого? отсутствие регистрации в модуле вызывает у меня огорчение.   -  person Dan    schedule 19.07.2010


Ответы (5)


У Sitecore есть собственный движок для перенаправления URL-адресов, поэтому здесь, вероятно, пересекаются некоторые провода. Возможно, вам нужно переместить свой HttpModule, чтобы он выполнялся раньше в цепочке.

person Bryan    schedule 01.03.2010
comment
Трассировка сбоя определенно показывает, что перезапись происходит до запуска конвейера Sitecore. Есть ли смысл в том, что события происходят в неправильном порядке? - person Abs; 01.03.2010
comment
Я полагаю, что нет. Но интересно, что этот модуль Nexus является первым зарегистрированным модулем Sitecore (я только что проверил свой web.config). Вы пробовали просто удалить его? Я не уверен, что он делает. - person Bryan; 01.03.2010
comment
Хорошо, Nexus — неотъемлемая часть Sitecore... его нельзя отключить. Вопрос: Что происходит, когда вы просто просматриваете целевой URL в браузере? Та же ошибка? Какой полный URL? Есть ли у него расширение, которое Sitecore не обработает? - person Bryan; 02.03.2010
comment
@Brian - если вы переходите по URL-адресу в «обычном» браузере, страница загружается нормально. Только когда сканер пытается получить доступ к переписанному URL-адресу, он выдает ошибку 302 «объект перемещен». По крайней мере, так происходит в нашем случае. - person ianpoley; 28.10.2010
comment
Как это ответ? Я столкнулся с той же проблемой, но не уверен, что ее исправило или каково решение? Для меня все работало нормально, и вдруг после несвязанного развертывания оно остановилось. Любые идеи? - person xoail; 10.09.2011

Sitecore утверждает, что исправил это в выпуске 6.2 rev.100831 (Update-4) — http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/KnownIssues%20Recommended/Rewriting%20URLs.aspx

person Julian    schedule 06.10.2011

Используйте конвейерный режим «Классический», а не «Интегрированный».

http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/KnownIssues%20Recommended/Rewriting%20URLs.aspx

person Dan    schedule 19.07.2010
comment
Проблема с этим «исправлением» заключается в том, что если вы используете новую опцию URL-адреса без расширения (которая удаляет расширение .ASPX), вы не можете запустить проект в классическом режиме. Он будет обслуживать 404 страницы. - person ianpoley; 28.10.2010
comment
@ianpoley - Самое смешное, что после перехода к классике, а затем обратно к Интегрированному, это теперь исправлено. - person Dan; 29.10.2010

Вы можете получить ту же ошибку при выполнении

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

в коде C# способ исправить это — использовать перегруженный:

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

который немедленно завершит ответ.

Очевидно, что модуль перезаписи не завершает запрос немедленно, что позволяет Sitecore решить эту проблему. Вы можете обойти эту проблему, создав модуль для обработки перенаправлений или попытавшись расширить модуль перезаписи URL, чтобы немедленно завершить ответ.

person Rhys Godfrey    schedule 30.06.2010

Я столкнулся с этим в экземпляре MultiSite на Sitecore v6.5, см. мой ответ здесь: GetBrowserClassString

person testpattern    schedule 09.07.2014