Я выполняю Sitecore 6.1 в Windows 2008, IIS7, и я пытаюсь использовать URL, Переписывают Модуль, чтобы сделать перенаправление. Когда я включаю правило и поражаю URL, который инициировал его, я получаю YSOD. То же правило работает отлично над non-sitecore сайтом на той же машине. Согласно Неудавшейся Трассировке Запроса, переписать модуль делает свою вещь очень хорошо, но затем 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
Sitecore имеет собственный движок для перенаправления URL-адресов, поэтому некоторые провода, вероятно, здесь пересекаются. Возможно, вам нужно переместить HttpModule, чтобы он выполнялся раньше в цепочке.
Вы можете получить ту же ошибку при выполнении
Response.Redirect("~/SomeUrl.aspx")
в коде C #, способ исправить это - использовать перегруженный:
Response.Redirect("~/SomeUrl.aspx", true)
, который немедленно завершит ответ.
Очевидно, что модуль перезаписи не завершает запрос немедленно, что позволяет Sitecore решить эту проблему. Вы можете обойти эту проблему, создав модуль для работы с перенаправлениями или попытавшись расширить модуль перезаписи URL, чтобы немедленно завершить ответ.
Используйте режим конвейера «Классический», а не «Интегрированный»