本文章是由機器翻譯。

SharePoint ’s 沙箱

開發、 部署,和監視在 SharePoint 2010 沙箱解決方案

Paul Stubbs

SharePoint 是豐富的開發平台與大型社群,積極地開發的解決方案。 所面臨的挑戰不過,永遠已經建立的解決方案及部署,您可以信任的之間取得平衡會不損害或影響 SharePoint 伺服陣列。 伺服陣列管理員負責維護生命值和 SharePoint] 陣列的完整性,這通常表示在測試和驗證解決方案部署到伺服陣列位置中放入複雜、 費時的程序。 這項需求計數器是用來建立 SharePoint 解決方案的快速應用程式模型,而且 complicates 協力廠商解決方案部署。 SharePoint 2010 的新功能稱為沙箱解決方案,位址許多這些考量讓覺得舒適 SharePoint 伺服器陣列是安全提供網站集合管理員授權單位來管理應用程式在他們的網站集合,而且他們提供開發人員彈性地建立解決方案知道伺服陣列系統管理員將部署安全和快速的方式。

在這篇文章我說明在 SharePoint 2010 如何沙箱解決方案提供一個架構的安全和快速部署的解決方案。 您學習如何伺服陣列管理員可以監視解決方案,以及網站集合管理員如何安裝及管理方案和功能。 您也看到如何開發沙箱的網頁組件。 瞭解如何將解決方案部署到沙箱的 let’s 開頭。

部署沙箱解決方案

沙箱方案結構就和通常會以完全信任權限執行的伺服陣列解決方案非常類似。 主要的差異介於在沙箱方案的部署方式和裝載解決方案 (用來決定方案是否沙箱的方案或伺服陣列方案) 處理序中。 這表示相同的沙箱方案可以執行具有時它部署在伺服陣列層級的完全信任和部分信任時它部署網站集合層級。

SharePoint 解決方案是可部署的套件可以包含的功能和組件。 方案套件是副檔名為.wsp.cab 為基礎檔案。 Visual Studio 2010 SharePoint 專案範本建立.wsp 封裝檔案。 方案可能包含許多的 SharePoint 功能,這些功能提供的功能 (例如 Web 組件、 清單定義、 模組及事件接收者。

網站集合管理員現在擁有上載、 啟動、 刪除,授權,並管理沙箱解決方案使用 [新方案圖庫,是沙箱解決方案的存放庫。 組件庫也讓網站集合系統管理員可以監視解決方案 ’s 使用資源配額。 (您會看到如何在本文稍後)方案圖庫是只是標準 SharePoint 清單儲存.wsp 檔案。 它位於 [_catalogs/解決方案在 _catalogs 資料夾之下。 當您從 SharePoint 2007 網站集合升級時,組件庫就會新增到網站集合。 您開啟方案圖庫由在 [網站動作] 功能表上的第一個按一下 [網站設定] 的 圖 1 所示。 然後,在網站設定] 頁面上按一下 [庫區段下的 [方案]。


圖 1 的 SharePoint 解決方案庫

沙箱方案部署至網站集合 []] 是很簡單的只要.wsp 檔案上載到展覽館,啟動它。 按一下 [上載文方案] 按鈕,提供您選項上載單一.wsp 檔案或多個檔案。 當上載的文件表單開啟時,瀏覽.wsp 檔案或您想要部署的檔案的位置。

接下來,您會提示您啟動方案。 當您啟動方案時,網站集合範圍功能會自動同時也啟動,但是您必須移至每個站台啟動站台範圍管理站台功能] 頁面的功能。 方案圖庫] 列出方案 ’s 名稱和修改的日期,以及它的啟動的狀態方案所消耗掉的資源。 只有在已停用之後,您可以從圖庫刪除方案。 如果想將方案從一個網站集合複製到另一個儲存.wsp 檔案到磁碟,上載至另一個方案圖庫。

您也可以使用新的方案和功能升級的基礎結構功能 SharePoint 2010 升級沙箱的解決方案。 若要升級方案,您必須建立.wsp 檔案,新的檔案名稱,但相同的方案 ID。 最簡單的方法是在 Visual Studio 中開啟您的專案並進行的變更之後,您可以藉由使用封裝設計工具變更封裝名稱。 按兩下 [套件] 節點,在您的方案中開啟 [套件] 設計工具,然後再變更封裝的名稱。 如同為新的套件,您現在可以上載沙箱方案套件。 SharePoint 會偵測到具有相同的方案 ID 套件已安裝,並會提示您升級。 升級後您看到,就會啟動新的版本並停用舊版本, 所示 圖 2如果您瀏覽至安裝方案的 [網頁組件,您可以看到執行的新版本。


圖 2 升級沙箱方案

建置沙箱網頁組件

沙箱方案看起來,並的行為就像伺服陣列方案但標示沙箱方案 ’s 組件必須允許部分信任的呼叫端。 專案] 的 [屬性] 視窗中設定沙箱方案屬性。 請記住沙箱解決方案可以部署為完全信任的方案,並獲得展開隨附在完全信任中執行,因為.wsp 方案檔中沒有任何指定為沙箱的方案或伺服陣列解決方案的功能。 這會決定如何部署方案。

沙箱解決方案種最常見的其中一種是 Web 組件。 本章節中我說明如何建立具有網頁組件的沙箱方案和點出一些您應該注意的問題。 第一次,有兩種類型的 Visual Studio 中的網頁組件 — 視覺化的 Web 組件和標準的 Web 組件。 視覺化的網頁組件包含.ascx 控制項可讓您以視覺化方式設計網頁組件的外觀。 不幸的是,您無法使用視覺化的 Web 組件在沙箱中,因為沙箱解決方案 can’t 將檔案部署至 Web 前端,也就是.ascx 檔案需要部署。 這表示您必須建立標準的網頁組件。

藉由在 SharePoint 節點下的 [新增專案] 對話方塊選取空專案的 C# 或 Visual Basic 啟動。 當您建立 SharePoint 解決方案時,專案精靈會詢問您是否要建立,預設值是一個沙箱方案] 或 [完全信任方案。 (請參閱 圖 3) 這個選項適用於可以部署至方案圖庫的 SharePoint 解決方案。 確認網站集合的路徑之後,請按一下 [完成]。


圖 3 的 新 SharePoint 專案精靈] 對話方塊

若要將網頁組件加入至方案,從 [專案] 主功能表中選擇 [加入新項目,然後選取 [從清單的 [網頁組件專案範本項目]。 這個時候您有一個功能完整沙箱網頁組件,您可以部署。

在開發沙箱方案在 Visual Studio 會自動部署,而且當您按下 F5 啟動方案圖庫中的方案。 如果您瀏覽至方案圖庫,可以看見剛剛建立並部署的解決方案。 的 圖 4 在方案會有預設名稱 SharePointProject1。


圖 4 SharePoint 專案部署至由 Visual Studio 方案圖庫

就與其他類型的 Visual Studio 專案可設定一個中斷點在程式碼中,以沙箱的解決方案。 不過,Visual Studio won’t 辨識中斷點此時因為 [網頁組件有未被加入至頁面。 圖 5 指出包含網頁組件之組件已不載入附加的處理程序中所示,您看到一行的中斷點的程式碼將左邊界中空心紅色圓圈。 網頁組件加入網頁時 Visual Studio 會偵測組件已載入,並將會在中斷點上停止。 即使您 haven’t 尚未將任何真實的程式碼加入至專案,您可以看到所有項目是在地方與正常運作。


圖 5 偵錯在 Visual Studio 的 SharePoint 解決方案

知道一點有關 SharePoint 沙箱隔離的實作方式,可協助您瞭解如何偵錯沙箱的解決方案。 您可能熟悉偵錯在 SharePoint 稱為 w3wp.exe 所使用的 IIS 背景工作處理序下執行的完全信任解決方案。 沙箱解決方案不會執行此處理序之下。 它們在稱為 SPUCWorkerProcess.exe 就可以看到在 沙箱背景工作處理序下執行 圖 6Visual Studio 會自動附加偵錯工具到這個處理序當您按下 F5。 如果您正在偵錯已部署的解決方案,您需要手動附加至這個處理序。


圖 6 附加至偵錯沙箱方案 SPUCWorkerProcess

現在 let’s 看看有幾個範例的程式碼沙箱方案中的執行方式。 第一個是在沙箱中運作的程式碼範例。 將下列程式碼加入至您網頁組件 」 中 CreateChildControls 方法中,只在 base.CreateChildControls 方法之後。 您可以看到您可以存取 SPLists 集合,在網站中傳回 SPList 物件數。 清單和在沙箱方案中的程式庫通常使用在完全信任的方案中一樣。 您是只限於目前的網站集合。

protected override void CreateChildControls()
    {
      base.CreateChildControls();

      Label ListCount = new Label();
      ListCount.Text = 
        String.Format("There are {0} Lists",
        SPContext.Current.Web.Lists.Count);
      Controls.Add(ListCount);
    }

在沙箱中封鎖的另一個範例使用 SPSecurity。 剪下和下列程式碼貼至網頁組件然後它部署在沙箱隔離:

protected override void CreateChildControls()
    {
      base.CreateChildControls();

      SPSecurity.RunWithElevatedPrivileges(
        delegate
        {
          Label ListCount = new Label();
          ListCount.Text =
            String.Format("There are {0} Lists",
            SPContext.Current.Web.Lists.Count);
          Controls.Add(ListCount);
        });
    }

您 won’t 收到例外狀況之前,程式碼沙箱隔離程序中執行。 擲回的例外是 「 無法從組件載入型別 'CodeToRunElevated' 'Microsoft.SharePoint、 版本 = 14.900.0.0 文化特性中性 PublicKeyToken = = 71e9bce111e9429c' 」這個例外狀況不是安全性例外狀況,但將遺漏的型別例外狀況,它 SPSecurity 類別時,就會發生不沙箱 SharePoint API 的一部份。 您可能想知道如何可以有遺漏的型別執行階段例外狀況如果 Visual Studio 編譯方案沒有任何例外狀況。 Visual Studio 編譯對 SharePoint] API 的完整版本,但在執行階段,SharePoint swaps 出完整的 API 以沙箱的 API,以及此 API 會是您的程式碼針對執行。 Visual Studio 可以幫助您撰寫有效的程式碼為您篩選 IntelliSense,當您建立沙箱的方案。 您可以看到在 SPSecurity 類別也未出現在清單中的 圖 7 。 不過,如果您剪下,並從完全信任方案的程式碼貼在沙箱中該程式碼可能無法運作,而且 Visual Studio 有沒有辦法驗證這。


圖 7 IntelliSense 篩選協助您建立有效的沙箱方案

在沙箱中工作

您看過如何部署和建置沙箱的解決方案。 現在 let’s 瀏覽您該怎麼做在沙箱中。

沙箱解決方案能夠存取功能的大型子集 Microsoft.SharePoint 命名空間中。 本質上的所有類別下方 SPSite 都可。 這表示 SPSite、 SPWeb、 SPList 及 SPListItem 是所有可用的。 在沙箱的方案中,您可以建立 Web 組件、 清單定義及執行個體、 內容類型和欄位、 模組、 宣告式工作流程和事件接收者。 完整的沙箱 API 都記錄在 SharePoint SDK 中。

在一般沙箱程序防止您存取網站集合已部署方案外的資料。 這表示,例如 can’t 存取網際網路,才能進行 Web 服務呼叫、 can’t 存取硬碟讀取或寫入檔案,而且 can’t 未標記為允許部分信任的呼叫端存取程式碼。 也 can’t 部署檔案到磁碟,或將組件加入至 GAC 沙箱方案中,而且不允許與安全性相關功能,例如執行 RunWithElevatedPriviledges 及其他 SPSecurity] 方法。

但您可以怎麼是讀取和寫入清單和文件庫相同的網站集合中。 在沙箱提供建置大部分的應用程式在網站層級所需的足夠功能。 有些時候但是,您可能想要啟用您沙箱的解決方案之外執行例如呼叫 Web 服務或存取資料庫的 「 受信任的作業沙箱到達。 若要達到超出沙箱最好是藉由使用商務連線服務 (BCS) 來建立外部的內容類型。 您可以再從讀取和寫入至資料來源沙箱的解決方案。 到達沙箱以外的另一個、 更進階方式是建立在沙箱背景工作處理序之外的完全信任處理序中執行以 Proxy 呼叫的類別。 這個 Proxy 類別已部署作為伺服陣列的解決方案,並且可從沙箱解決方案呼叫。 雖然它是本文說明如何建立完全信任 Proxy 範圍之外時,您應該注意的功能。

監視解決方案

伺服陣列管理員必須負責保留 SharePoint 伺服陣列狀況良好且安全,且現在有工具來監視及設定配額沙箱解決方案上。 SharePoint 提供與使用者介面中將資源配額指派給每個網站集合的中央系統管理的伺服陣列管理員。 您可以從 [應用程式管理] 區段下的 [管理中心] 頁面存取配額。 然後按一下 [設定配額及站台集合一節中的鎖定。 您也可以直接至 /_admin/sitequota.aspx 在頁面巡覽,管理中心網站中。

配額與鎖定頁, 的 [圖 8] 所示可讓您選取 [網站集合使用。 在 [網站配額資訊] 區段中,您可以設定使用者方案資源配額內容。 您可以啟用每日上限,並設定的點,以允許量。 預設值為 300 點。 點會根據計算的我將稍後說明的因素。 當您到達特定數目的點,預設設定為 100 時,您也可以啟用電子郵件的警示。 頁面也告訴您目前的使用方式的一天和平均使用量過去 14 天。 這兩個項目提供同一個網站集合管理員可監視解決方案圖庫] 頂端的值。


圖 8 伺服器陣列系統管理員控制資源配額

伺服陣列管理員也可以藉由使用 Windows PowerShell 調整解決方案資源配額。 比方說 PowerShell,很容易非常逐一查看每個網站集合,並將這些值重設回其預設值。 使用 Get SPSite 命令和管線到 foreach 陳述式會變更使用單一行程式碼的所有值。 若要執行此程式碼、 從 [開始] 功能表開啟 SharePoint 2010 管理主控台視窗並輸入下列命令:

Get-SPSite | foreach-object {$_.Quota.UserCodeMaximumLevel = 300}
Get-SPSite | foreach-object {$_.Quota.UserCodeWarningLevel = 100}

如果想查看只有目前的配額值已您可以執行下列的 PowerShell 命令:

Get-SPSite | foreach-object {$_.Quota}

這個命令輸出陣列中每個網站集合的配額屬性。 PowerShell 將格式設定的配額內容的網站集合,做為簡單的清單這類的輸出:

QuotaID                   : 0
StorageMaximumLevel         : 0
InvitedUserMaximumLevel     : 0
StorageWarningLevel         : 0
UserCodeWarningLevel        : 100
UserCodeMaximumLevel        : 300
UpgradedPersistedProperties :

UserCodeWarningLevel 和 UserCodeMaximumLevel 是兩個配額屬性可控制沙箱的解決方案。 您會看到詞彙 「 使用者程式碼 」 和 「 使用者解決方案 」 來參照沙箱的程式碼,並在某些系統管理頁面和 SharePoint 物件模型中的解決方案。 這些屬性可讓您調整指派給每個網站集合的點數目。 您也可以調整用來計算什麼的演算法的另一個點值得。 點為單位計算的基礎上各種度量資訊和這些測量標準設計用來監視伺服器,以反映正確的伺服器,則為 True 的健全狀況的資源使用方式。 SharePoint 包含 14 投稿至配額點的度量資訊。

  1. AbnormalProcessTerminationCount
  2. CPUExecutionTime
  3. CriticalExceptionCount
  4. InvocationCount
  5. PercentProcessorTime
  6. ProcessCPUCycles
  7. ProcessHandleCount
  8. ProcessIOBytes
  9. ProcessThreadCount
  10. ProcessVirtualBytes
  11. SharePointDatabaseQueryCount
  12. SharePointDatabaseQueryTime
  13. UnhandledExceptionCount
  14. UnresponsiveprocessCount

每個公制稱為一個 ResourceMeasure 包含 ResourcesPerPoint 屬性。 ResourcesPerPoint 值除以來計算用在該分類點消耗掉的資源。 比方說 AbnormalProcessTerminationCount 具有 ResourcesPerPoint 值為 1。 每次沙箱方案會異常終止,新增 1 點。 若想增加,會終止以沙箱解決方案懲罰您可以設定 ResourcesPerPoint 為如 2 的另一個值。 如果您不擔心這個公制,您可以使用 0。 其他 ResourceMeasures 可能沒有一對一的對應與事件。 CPUExecutionTime 公制可防止沙箱解決方案耗用太多的 CPU 循環。 預設 ResourcesPerPoint 值為 CPUExecutionTime 的 3,600。

另一個值是的每當方案取得一個點就會遞增的 AbsoluteLimit。 如果方案超過 AbsoluteLimit 值,會終止即使不已經達到每日的使用方式限制。 超過 AbsoluteLimit 值會影響只在單一方案,與每日的使用方式限制不同。 配額每日的限制,絕對限制的這些兩個層級合作來保護伺服器陣列的健全狀況。 我強烈建議您不能修改 ResourceMeasures,但為開發人員或系統管理員,您應該瞭解完全這些機制運作方式。

雖然 SharePoint 並沒有提供調整配額度量資訊管理網頁,您可以看到並變更使用 SharePoint 物件模型或 Windows PowerShell 將值。 下列 PowerShell 指令碼輸出 ResourceMeasure 物件包含每個 ResourceMeasure 物件的所有屬性的清單中的所有 14。 圖 9 顯示來自兩個值 AbnormalProcessTerminationCount 和 CPUExecutionTime 輸出範例。

[System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")
$spusercodeservice = [Microsoft.SharePoint.Administration.SPUserCodeService]::Local
$spusercodeservice.ResourceMeasures

圖 9 的 ResourceMeasure 物件的範例輸出

MinimumThreshold        : 0
ResourcesPerPoint       : 1
AbsoluteLimit               : 1
Name                    : AbnormalProcessTerminationCount
TypeName                : Microsoft.SharePoint.Administration.SPResourceMeasure
DisplayName                 : AbnormalProcessTerminationCount
Id                  : 878646dd-2460-4e88-83cd-67e938fb069c
Status                  : Online
Parent                  : SPUserCodeService Name=SPUserCodeV4
Version                 : 2308
Properties               : {}
Farm                    : SPFarm Name=SharePoint_Config
UpgradedPersistedProperties     : {}

MinimumThreshold        : 0.1
ResourcesPerPoint       : 3600
AbsoluteLimit               : 60
Name                    : CPUExecutionTime
TypeName                : Microsoft.SharePoint.Administration.SPResourceMeasure
DisplayName              : CPUExecutionTime
Id                  : 418cbb0f-d191-4633-9177-7a4568d11d8d
Status                  : Online
Parent                  : SPUserCodeService Name=SPUserCodeV4
Version                 : 2265
Properties              : {}
Farm                    : SPFarm Name=SharePoint_Config
UpgradedPersistedProperties     : {}

您也可以使用 SharePoint 物件模型來以程式設計方式調整值。 可以取得從靜態屬性 SPUserCodeService 物件上呼叫本機的沙箱服務參考,並逐一查看 ResourceMeasures 集合。 以下為範例:

SPUserCodeService userCodeService = 
            SPUserCodeService.Local;

      SPResourceMeasureCollection rmc =
        userCodeService.ResourceMeasures;

      foreach (SPResourceMeasure resourceMeasure in rmc)
      {
        Console.WriteLine(resourceMeasure.Name);
      }

驗證在沙箱中的解決方案

SharePoint 沙箱架構提供額外的方法,讓伺服陣列管理員來監視並驗證在沙箱中執行的解決方案。 伺服陣列管理員可以部署方案上載至方案圖庫時執行的方案驗證程式。 系統管理員可以建立允許唯一執行,使用特定的憑證簽署的程式碼的驗證程式,例如或者他們可以建立要允許只有 Web 組件的驗證程式。 驗證程式的另一種很好的用法是在伺服陣列中的記錄與型錄解決方案,如已啟動。 您可以看到這個簡單但強大的工具如何協助伺服陣列管理員取得控制碼上執行伺服陣列中的解決方案。

當啟動方案時,就會呼叫每個方案驗證程式。 如果更新驗證程式解決方案會驗證一次執行它們在下一次。 您可以藉由新增 SPSolutionValidator 從衍生的類別在 SharePoint 伺服器陣列] 功能專案內建立一個驗證程式。 驗證程式類別必須有 System.Runtime.InteropServices.Guid 屬性指派給它。 您可以使用 Visual Studio 工具] 功能表上的 [建立 GUID] 工具來建立 GUID 值。 使用此值作為 ProviderID 屬性。

接下來您會新增至 UserCodeService 參考的建構函式。 這個建構函式呼叫基底類別建構函式,[UserCodeService 並驗證程式的字串名稱傳遞。 這個建構函式中,您必須指派一個 「 簽章 」 屬性,用來驗證程式。 隨附 Windows 預設驗證程式會使用值 1。 如果您正在建置範例,您可以使用 1234年。 SharePoint 使用簽章屬性來判斷是否有變更驗證程式。 在實際執行的驗證程式,您希望這個值可以是包含版本資訊的驗證程式的雜湊。

接下來您會覆寫 ValidateSolution 和 ValidateAssembly 方法。 ValidateSolution 方法呼叫一次,針對每個解決方案,而且 ValidateAssembly 會針對每個方案中的每個組件呼叫一次。 ValidateSolution 方法會傳遞 SPSolutionValidationProperties 物件包含用來驗證解決方案屬性數量。 最重要屬性是有效的屬性。 這個屬性設為 False 預設情況下,所以您必須將它設定為 True 或方案的驗證會失敗。 您也可以設定 [ValidationErrorMessage,以及 [ValidationErrorUrl 傳送有關解決方案為何失敗驗證,回復資訊以及您可以使用檔案集合來取得方案套件中的所有檔案的參考。 ValidateAssembly 執行個體也會傳遞除了一個 SPSolutionFile SPSolutionValidatorProperties 的參考的是方案套件中組件的參考。 圖 10 顯示方案驗證程式的範例。

圖 10 的 A 方案驗證程式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.UserCode;

namespace SandboxSolutionValidator
{
  [Guid("DAC77CB7-7511-4E7E-8427-B6A57C5F49F7")]
    class SandboxSolutionValidator:SPSolutionValidator
    {
    [Persisted]
    List<string> PutSomeStringsHere;

    private const string validatorName = "Sandboxed solution Validator";

    public SandboxSolutionValidator(
      SPUserCodeService userCodeService) :
      base(validatorName, userCodeService)
    {
      this.Signature = 1234;
    }

    public override void ValidateSolution(
      SPSolutionValidationProperties properties)
    {
      //System.Diagnostics.Debugger.Launch();
      base.ValidateSolution(properties);
       
      //Determine whether the solution is valid
      properties.Valid = true;

      //Iterate over each file in the solution
      foreach (SPSolutionFile file in 
                properties.Files) { }

      //Set the error message and Url if it’s not valid
      properties.ValidationErrorMessage =
        "The solution is not valid";
      properties.ValidationErrorUrl =
        "http://moss.Contoso.com/MyErrorPage.apx";
    }

    public override void ValidateAssembly(
      SPSolutionValidationProperties properties, 
      SPSolutionFile assembly)
    {
      //System.Diagnostics.Debugger.Launch();
      base.ValidateAssembly(properties, assembly);

      properties.Valid = true;
    }
    }
}

您必須在 SPUserCodeService SolutionValidators 集合中加入方案驗證程式。 您可以如此做,請使用 Windows PowerShell,不過建議的方式是藉由使用伺服陣列層級功能部署驗證程式。 在功能您可以使用功能接收器在集合中加入驗證程式。 FeatureActivated 事件中 (請參閱 的 圖 11] 所示) 取得伺服陣列 ’s SPUserCodeService 的參考。 您可以使用 [SPUserCodeService 來建立您的驗證程式的執行個體,然後將該執行個體加入至 [UserCodeService SolutionValidators 集合。 這些作業可能會有點難以偵錯,但是您可以新增 Debugger.Launch 指令至您的程式碼。 這會啟動的 Visual Studio 執行個體,並將您的程式碼附加到正確的處理程序。 要確定當您完成開發驗證程式時,移除這些命令。

圖 11 部署一個驗證程式

public override void FeatureActivated(
        SPFeatureReceiverProperties properties)
    {
      //System.Diagnostics.Debugger.Launch();

      SPUserCodeService userCodeService =
            SPUserCodeService.Local;

      SPSolutionValidator validator = new SandboxSolutionValidator(userCodeService);

      userCodeService.SolutionValidators.Add(
            validator);
    }

您可以使用 PowerShell 来列示安裝在伺服器陣列是快速的方式,請確認安裝哪一種驗證程式的系統管理員中的驗證程式。 預設方案驗證程式隨附的 SharePoint 2010 技術預覽版本。 這個驗證程式沒有作用集以外的其他有效的屬性為 True。 請輸入下列 PowerShell 指令碼,以列出已安裝的驗證程式。 您可以看到在 輸出 圖 12

[System.Reflection.Assembly]::Load(
"Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c");
$spusercodeservice = [Microsoft.SharePoint.Administration.SPUserCodeService]::Local;
$spusercodeservice.solutionvalidators;


圖 12 的 已安裝方案驗證程式

您看過小範例,說明如何建立、 部署,並驗證您的伺服陣列中的沙箱程式碼。 本範例應讓您建立豐富且有趣的驗證程式碼,讓您的陣列以彈性和安全性。

沙箱是預設值

如前所述,預設 SharePoint 的專案類型,Visual Studio 中會是沙箱的解決方案。 這應該是您請記得預設值 — 您應該考慮關於建立您的 SharePoint 解決方案沙箱環境內執行。 您已看過沙箱應用程式是強大,、 可以執行大部分的商務使用者所需的工作並提供能力時您需要以安全的方式中斷。 真正的好處是此時您可以將方案部署至企業的速度。 您不再需要遵循測試的經歷程序,並且您建立每個解決方案的驗證,雖然優良的軟體作法應該永遠後面。 網站集合管理員將能夠控制自己的集合,並執行他們的網站權限的解決方案。 伺服陣列管理員將不會免費從控制的任務,並管理方案的所有要求會安裝,而且要能夠專注於一組豐富的監視工具的整體伺服陣列的健全狀況。

在結束我預測您會看到 SharePoint 解決方案的爆炸。 您看到更的多撰寫和部署企業方案和一個非常大的增加 SharePoint 社群,因為方案將會更容易使用且容易尋找、 安裝,並執行。

Paul Stubbs 是一個 Microsoft 技術 evangelist SharePoint 和 Office 人員著重於資訊工作者開發社群的 SharePoint] 和 [Office]、 [Silverlight,] 和 [Web 2.0 的社交網路。 他有編寫有關使用 Microsoft Office、 SharePoint 和 Silverlight 的解決方案開發的三個書籍和 的 MSDN Magazine 的幾篇文章。 他也有語音 Microsoft 科技 Ed 和 TechReady 演說。 在另外 Paul 已正常運作,身為資深程式經理與 Visual Studio 工具為 Office 小組在台北市,華盛頓。 讀取他的部落格,在 blogs.msdn.com/pstubbs