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的使用就要稍微小心一些唷!

2014年9月28日 星期日

SharePoint 2013 JavaScript Runtime Error – RegisterSod is undefined

開發這麼久的SharePoint 昨天第一次遇到這個錯誤訊息:SharePoint 2013 JavaScript Runtime Error – 'RegisterSod' is undefined,錯誤的畫面如下:

image

先來說說我的開發步驟,其實步驟是很單純的:

1. 使用VS2012建立一個App的專案,然後設定欲部署的Site Url,如下:http://xxxxxx/sites/appHost

image

2. 然後…就直接F5部署啦! 這時就出現了以上的錯誤訊息:JavaScript Runtime Error – RegisterSod is undefined

那麼問題到底在哪? 答案就是SharePoint 2013上Site Collection可能尚未設定 “根路徑Site Collection (Root Site Collection)”。

以下是我目前的環境上的Site Collection,我在建置Site Collection時是直接使用sites路徑建立的,因此並未建立所謂的根路徑Site Collection:

image

在SharePoint 2010以往的開發部署過程中,並不需要去考量Site Collection的設定以及建置關聯,因為在SharePoint 2010是開發Server OM,因此直接部署就可以WORK! 但是在SharePoint 2013 App卻不行,SharePoint 2013 App 會用到大量的Client Script,因此在執行時會預先載入一堆的Client Script,而此時路徑相對的就很重要。

因此解決的方式就是先直接建立一個根路徑Site Collection,以下畫面中的 / 就是建立根路徑的Site Collection

image

然後我們在部署一次APP看看!!成功了!!

image

其實Google了一下,發現有很多人都遇到相同的問題! MSDN論壇上也有很多人在討論,以下有相關問題說明:
http://algrandi.azurewebsites.net/index.php/sharepoint-2013-error-registersod-is-undefined/