2014年10月22日 星期三

有關Sandboxed Solution在單機開發環境上的錯誤-An unknown exception occurred while executing a sandboxed code solution request in the worker process.\r\n|0

先說明一下,遇到這問題的情況,因為最近在準備新的課程教材,因此安裝設定一個SharePoint 2013的開發環境,而這個環境是所謂的All-in-One開發環境,也就是:Windows 2012 + DC +  IIS +SharePoint 2013 + SQL Server 2012 + VS2012… 全部都安裝在同一個VM上。

理論上來說這些不同的Service在正式SharePoint環境上其實都是分開機器安裝的 ,因此,在測試Sandboxed Solution的時候,單純的新增一個WebPart,然後選擇使用Sandboxed Solution部署,部署完成之後,當此WebPart要加入至網頁中,就出現了以下的錯誤訊息:An unknown exception occurred while executing a sandboxed code solution request in the worker process.\r\n|0

image

針對這個問題,查了ULS LOG,也上網找了一些相關的討論,目前得到的結果是:在Windows 2012環境上假設將DC 和 SharePoint 等服務全部裝在一起的話,Sandboxed Solution就不Support.

不過,高手還是很多的,以下有找到一篇文章有暫時的解決方案,原文在此:http://spvee.wordpress.com/2013/08/14/sandboxed-solution-on-sharepoint-2013-with-domain-controller-worked/重點:設定Sandboxed Code Service Log 啟用Verbose. 不過印象中假設OS是Windows 2008 R2就沒有這問題。對我來說,因為這種All-In-One的環境本來就是開發測試用的,不大有機會拿來當客戶的正式機使用,因此以下的解決方式就可以解決使用Sandboxed Solution的專案了!!!!

設定步驟如下:

1. 首先至管理中心 –> Monitoring –> Configure diagnostic logging

image

2. 找到SharePoint Foundation下的Sandboxed Code Service,勾選Sandboxed Code Service之後,畫面移至下方,然後Least critical event to report to the trace log這個選項,選擇:Verbose,按下OK!!

image

3. Sandboxed Code Service 其 Trace Level設定為Verbose.

image

4. 回到網頁,將Sandboxed 的WebPaer重新加入網頁中,成功了!!

image

以上唯一要擔心的是,因為log是設定為Verbose,因此所有Sandboxed 的全部資訊都會記錄至Log中,對硬碟的空間耗用會比較大,因此Log的使用就要稍微小心一些唷!