2015-06-23 138 views
4

我想做一個簡單的控制器呈現與Sitecore 8和出於某種原因,它正在生產StackOverflowException在主佈局標記中包含對其將被呈現的佔位符的引用。這似乎崩潰的工作進程,但你可以看到在調試過程中的堆棧溢出:Sitecore控制器呈現導致StackOverflowException

w3p crash StackOverflow

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

Controller/View

這裏是我的控制器渲染的定義:

enter image description here

繁殖記述:

  1. 這是在香草Sitecore的8安裝中發生(REV。 150427-通過SIM安裝)。
  2. MVC項目也是用空的ASP.NET項目創建的vanilla,然後是MVC 5.1中的NuGetting。
  3. Web.config & Global從Sitecore站點的根目錄中添加到wwwroot

僅供參考 - 一切都絕對沒問題做一個視圖渲染 - 這,似乎是導致問題

+0

我沒有得到這個解決方案一會兒,當搜索到**未處理的微軟.net框架異常w3wp sitecore stackoverflow **,最後這個問題是一個很大的幫助。 – Sivalingaamorthy

回答

3

所以這個問題其實很簡單。

返回一個ViewResult當視圖的目的是作爲一個局部視圖(所有Sitecore的效果會),那麼你必須在標記設置佈局屬性設置爲null:

@{ 
    Layout = null; 
} 

否則MVC將嘗試換它周圍的佈局文件,當然包含您的Sitecore佔位符,這會導致無限循環並使工作進程崩潰StackOverflowException

因此,在Sitecore的上下文中,返回一個PartialViewResult或返回一個ViewResult,其佈局設置爲null。

+0

謝謝,你把我的窗口格式化爲最後一個選項 – rdhaundiyal

+0

ha!我很高興阻止了這一點 –

1

我認爲這個問題可以用方法View()被稱爲沒有這可能會導致重新任何參數只是控制器效果圖再次提交整個Sitecore頁面。

嘗試參數添加到View()這樣的:

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

或一切要返回視圖的路徑。


編輯:

由於@David Masters發現,由於某種原因,問題是與調用View代替PartialView方法的完整路徑作爲參數。正確的代碼是:

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

不幸的是,沒有解決問題... –

+0

'/ Views/Courses/Index.cshtml'的代碼是什麼? –

+0

只是一段文字:'這是一個索引視圖' –

1

我想在placeholder設置中缺少一些東西,你能檢查路徑sitecore/layout/placeholder設置嗎?

應該有一個您正在嘗試使用的佔位符鍵。

希望這會有幫助

乾杯!