Sitecore 控制器渲染导致 StackOverflowException

Dav*_*ers 5 asp.net asp.net-mvc sitecore sitecore-instance-manager

我正在尝试使用 Sitecore 8 进行简单的控制器渲染,并且出于某种原因,它StackOverflowException在主布局标记内的行中生成一个,其中包含对要在其中渲染的占位符的引用。这似乎使工作进程崩溃,但是您可以在调试过程中看到堆栈溢出:

w3p 崩溃 堆栈溢出

这是我非常基本的控制器:

控制器/视图

这是我的控制器渲染定义:

在此处输入图片说明

复制说明:

  1. 这发生在原版 Sitecore 8 安装中(修订版 150427 - 通过 SIM 安装)。
  2. MVC 项目也是用空的 ASP.NET 项目创建的,然后是 MVC 5.1 中的 NuGetting。
  3. Web.config & Global 从 Sitecore 站点根目录添加到项目中wwwroot

仅供参考-进行视图渲染时一切都很好-只是控制器渲染似乎引起了问题

Dav*_*ers 3

所以最终问题其实很简单。

ViewResult当视图打算作为部分视图(所有 Sitecore 渲染都将是)时返回 a ,那么您必须将标记中的布局属性设置为 null:

@{
    Layout = null;
}
Run Code Online (Sandbox Code Playgroud)

否则,MVC 将尝试将布局文件包裹在其周围,其中当然包含您的 Sitecore 占位符,这会导致无限循环并使工作进程崩溃StackOverflowException

因此,在 Sitecore 的上下文中,要么返回 PartialViewResult,要么返回布局设置为 null 的 ViewResult。