2015-06-23 2 views
4

Я пытаюсь сделать простой рендеринг контроллера с Sitecore 8 и по какой-то причине он создает StackOverflowException на линии в основной разметке макета, которая содержит ссылку на местозаполнитель, для которого она должна быть отображена. Это, кажется, врезаться рабочий процесс, но вы можете увидеть переполнение стека по отладке процесса:Регенерация контроллера Sitecore, вызывающая StackOverflowException

w3p crash StackOverflow

Вот мой очень простой контроллер:

Controller/View

А вот мой контроллер определение рендеринга:

enter image description here

Размножение Примечания:

  1. Это происходит в 8 установки ваниль Sitecore (ред. 150427 - устанавливается через SIM-карту).
  2. Проект MVC также ванильный, созданный с пустым проектом ASP.NET, затем NuGetting в MVC 5.1.
  3. Web.config & Global добавлен в проект с сайта root Sitecore в wwwroot.

FYI - все абсолютно нормально делать рендеринг вида - это просто контроллер визуализация, что, кажется, причина проблемы

+0

Я не получал это решение какое-то время, когда искал ** необработанное исключение оболочки Microsoft .NET. W3wp sitecore stackoverflow **, наконец, этот вопрос был большой помощью. – Sivalingaamorthy

ответ

3

Так что проблема была на самом деле довольно простой в конце.

Возврат ViewResult когда вид предназначен как частичный вид (который будет все рендеры Sitecore), то вы должны установить свойство макета в разметке пустое значение:

@{ 
    Layout = null; 
} 

В противном случае MVC будет пытаться обернуть файл макета вокруг него, который, конечно, содержит ваш Sitecore placeholder, который вызывает бесконечный цикл и выдает рабочий процесс с StackOverflowException.

Итак, в контексте Sitecore возвращаем PartialViewResult или возвращаем ViewResult с макетом, установленным как null.

+0

Спасибо, ты спас меня от форматирования моих окон в качестве последнего варианта – rdhaundiyal

+0

ha! Я рад предотвратить это –

1

Я думаю, что проблема может быть с помощью метода View() Называния без каких-либо параметров, которые могут привести к повторному -обделение всей страницы Sitecore снова.

Попробуйте добавить параметр в View() подобное:

return View("/Views/Courses/Index.cshtml"); 

или то, что путь представления вы хотите, чтобы вернуться.


EDIT:

Как @David Masters найден, по какой-то причине вопрос с вызовом View вместо PartialView метода с указанием полного пути в качестве параметра. Правильный код:

return PartialView("/Views/Courses/Index.cshtml"); 
+0

К сожалению, это не помогло решить проблему ... –

+0

Что такое код '/ Views/Courses/Index.cshtml'? –

+0

Просто фрагмент текста: 'Это индексный указатель' –

1

Я думаю, есть что-то не хватает в настройке заполнителя, вы можете проверить в пути Sitecore/макете/настройка заполнителя?

Должен быть ключ-заполнитель, который вы пытаетесь использовать.

Надеюсь, это поможет

Cheers !!

Смежные вопросы