針對 SharePoint 方案進行疑難排解

使用 Visual Studio 偵錯工具來偵錯 SharePoint 方案時,可能會發生下列問題或警示。 如需詳細資訊,請參閱 偵錯 SharePoint 2007 工作流程方案

沙箱化視覺 Web 組件中的語彙基元限制

沙箱化方案中的視覺 Web 組件無法處理標準語彙基元,例如 SharePoint 執行階段支援的 $SPUrl。 因此無法解析 URL,而且如果您直接在指令碼項目中參考內容,也無法在視覺 Web 組件設計工具的 [設計] 檢視中預覽該內容,如下列範例所示:

<script src="<% $SPUrl:~site/SiteAssets/ListOperations.js %>"></script>

若要解決這項限制並解析語彙基元,請使用常值參考語彙基元:

<asp:literal ID="Literal1" runat="server" Text="<script src='" />
<asp:literal ID="Literal2" runat="server" Text="<% $SPUrl:~site/SiteAssets/ListOperations.js %>" />
<asp:literal ID="Literal3" runat="server" Text="' type='text/javascript' ></script>" />

專案和專案項目名稱的字元限制

專案和專案項目的名稱只能包含在 SharePoint 2010 中的部署路徑內有效的字元。 不允許其他字元。

錯誤訊息

「無效字元」錯誤訊息。

解決方案

SharePoint 專案和專案項目的名稱只能使用下列字元:

  • 英數字元 ASCII 字元

  • Space

  • 句號 (.)

  • 逗號 (,)

  • 底線 (_)

  • 虛線 (-)

  • 反斜線 (\)

    在封裝專案時,驗證規則會針對每一個您要部署的檔案驗證 deployment-path 屬性是否只包含這些有效的字元。

建立自訂欄位時發生錯誤

在 Visual Studio 中,自訂欄位定義於 XML 中。 如果未使用特定格式定義或參考欄位,則可能會發生錯誤。

錯誤訊息

封裝時間的「無效字元」錯誤訊息。

解決方案

欄位定義的 ID 必須是以大括號括住的 GUID,如下列範例所示:

<Field ID="{5744d18c-305e-4632-8bd1-09d134f4830d}"
    Type="Note"
    Name="PatientName"
    DisplayName="Patient Name"
    Group="A Custom Group">
</Field>.

如下列範例所示,內容類型中的欄位參考必須使用空的元素格式 (<FieldRef />) 定義,而不能使用開始/結束元素 (<FieldRef></FieldRef>) 定義:

<FieldRef ID="{5744d18c-305e-4632-8bd1-09d134f4830d}"
    Name="PatientName"
    DisplayName="Patient Name"
    Required="TRUE"/>

如果欄位的來源 XML 格式錯誤或者不是有效的 XML 檔案,或出現其他問題,則會發生「無法剖析檔案」錯誤。

部署之後,新的非英文網站定義不會出現在網站建立頁面中

使用非英文版的 Visual Studio (也就是地區設定識別碼不是 1033 的版本) 建立和部署網站定義之後,[SharePoint 自訂] 索引標籤不會出現在 [範本選擇] 方塊中,而且新的網站範本不會出現在 [新的 SharePoint 網站] 頁面中。

錯誤訊息

無。

解決方案

發生此問題的原因是 webtemp 網站定義設定檔的 Path 屬性值不正確,例如 webtemp_SiteDefinitionProject1.xml。 在位於 [部署位置] 底下之 Webtemp 檔案的 Path 屬性中,將 1033 變更為適當的地區設定識別碼。 例如,若要使用日文地區設定,請將值變更為 1041。 如需詳細資訊,請參閱 Microsoft 指派的地區設定識別碼

在清除系統上部署工作流程專案時,會出現錯誤

如果您在乾淨系統上的 Visual Studio 中部署工作流程專案,就會發生此問題。 乾淨系統為具有 Visual Studio 和 SharePoint 全新安裝,但是沒有任何已部署工作流程專案的電腦。

錯誤訊息

找不到 SharePoint 清單:工作流程歷程記錄。

解決方案

此錯誤是因為遺漏工作流程歷程記錄清單而發生。 因為開發環境是乾淨的系統,因此不會部署任何工作流程,而且工作流程歷程記錄清單還不存在。 若要解決此問題,請重新開啟工作流程精靈,這會建立工作流程歷程記錄清單。

若要重新輸入工作流程精靈

  1. 在 [方案總管] 中選擇工作流程節點。

  2. 在 [屬性] 視窗中,於任何具有省略符號按鈕的屬性上選擇省略符號 (...) 按鈕。

使用者必須在瀏覽器中重新整理應用程式頁面,才能在偵錯時檢視更新的影像

如果您要偵錯 SharePoint 方案,其中包含含有顯示影像控制項的應用程式頁面,例如 HTML 影像控制項,您必須在瀏覽器中重新整理頁面,以顯示對影像所做的任何變更。

錯誤:網站位置無效

如果未安裝 SharePoint Server,就可能發生此問題。 如果您沒有 [SharePoint 自訂精靈] 中所指定 SharePoint 網站的系統管理員存取權,也可能會發生此情況。

錯誤訊息

  • SharePoint 網站位置無效。

解決方案

網站刪除 Web 事件不會在事件接收器專案中發生

當您建立事件接收器專案,並選取某些 Web 事件,例如「正在刪除網站」時,永遠不會發生此事件。

錯誤訊息

無。

解決方案

發生此問題的原因是功能範圍必須是「網站」來處理網站層級事件,但事件接收器專案的預設功能範圍是「Web」。 受影響的 Web 事件如下:

  • 正在刪除網站 (WebDeleting)

  • 已刪除網站 (WebDeleted)

  • 正在移動網站 (WebMoving)

  • 已移動網站 (WebMoved)

    若要修正此問題,請變更事件接收器的功能範圍,如下所示。

若要變更事件接收器的功能範圍

  1. 在 [方案總管] 中,透過按兩下檔案或開啟其捷徑功能表後選擇 [開啟] 的方式,在 [功能設計工具] 中開啟事件接收器的 .feature 檔案。

  2. 選擇 [範圍] 旁邊的箭號,然後選擇出現在清單中的 [網站]

部署錯誤會出現在商務資料連線模型專案中的識別碼名稱變更之後

如果您變更 Business Data Connectivity (BDC) 模型中實體的識別碼名稱,然後嘗試部署方案,就會發生此問題。

錯誤訊息

  • <model name> 發生下列外部內容類型啟用錯誤 ...

  • 名稱為 <model name> 的 IMetadataObject 在 [名稱] 欄位中有重複的值 ...

解決方案

若要解決此問題,請手動刪除模型,然後再次部署方案。 您可以使用下列其中一個工具來刪除模型:

  • SharePoint 2010 管理中心。 如需詳細資訊,請參閱 Microsoft TechNet 網站上的 BDC 模型 管理

  • Windows PowerShell。 您可以在命令提示字元中輸入此命令來刪除模型:Remove-SPBusinessDataCatalogModel。 如需詳細資訊,請參閱 Microsoft TechNet 網站上的一般 Cmdlet (SharePoint Server 2010)

嘗試回收 SharePoint Server 上的 IIS 應用程式集區時發生部署錯誤

如果未在 SharePoint Server 電腦上安裝 IIS 6 WMI 相容性功能和 .NET Framework 3.5,就會發生此問題。

錯誤訊息

  • 部署步驟「回收 IIS 應用程式集區」發生錯誤:命名空間無效
  • 部署步驟「回收 IIS 應用程式集區」發生錯誤:已取消工作。

解決方案

若要解決此問題,請在 SharePoint Server 電腦上檢查是否已安裝 Windows 功能 IIS 6 WMI 相容性

  • Windows PowerShell。 您可以執行下列 PowerShell 命令來檢查此功能是否已安裝:get-windowsfeature -name Web-WMI。 如果它未顯示為已安裝,您可以執行下列 PowerShell 命令來安裝它:install-windowsfeature -name Web-WMI。 如果您仍然看到嘗試回收應用程式集區時發生錯誤,請執行 get-windowsfeature -name NET-Framework-Coreinstall-windowsfeature -name NET-Framework-Core,並確定電腦上也已安裝 .NET Framework 3.5,如果沒有的話。

當您嘗試在 SharePoint 中檢視視覺 Web 組件時,會出現錯誤

當使用者控制項的 Path 屬性不是以字串 「CONTROLTEMPLATES\」開頭時,就會發生此問題。

錯誤訊息

  • 檔案 '/_CONTROLTEMPLATES/<專案名稱>/<Web 組件名稱>/<使用者控制項名稱>.ascx' 不存在。

  • '/' 應用程式中的伺服器錯誤。

解決方案

若要解決此問題

  1. 在 [方案總管] 中選擇使用者控制項檔案,其副檔名為 .ascx

  2. 在功能表列上選擇 [檢視]>[屬性視窗]

  3. 在 [屬性] 視窗中,展開 [部署位置] 節點。

  4. 確定 [路徑] 屬性的值開頭為 "CONTROLTEMPLATES\" 字串。

執行包含工作表單欄位的已匯入可重複使用工作流程時,會出現錯誤

如果您匯入包含具有欄位之工作表單的工作流程,然後在匯入該表單的相同系統上執行新工作流程,就會發生此問題。

錯誤訊息

部署步驟「啟動功能」發生錯誤:在目前網站集合或子網站中找到功能 [Guid] 中所定義的識別碼 [Guid] 欄位。

解決方案

此錯誤是發生欄位識別碼衝突的結果,因為 Visual Studio 中的匯入可重複使用工作流程專案不會變更工作表單域識別碼。 如果您在包含原始工作流程的相同伺服器上部署匯入的工作流程,就會發生欄位識別碼衝突。

若要解決此問題,請使用 [尋找和取代] 功能來變更所有匯入工作流程檔案中 [欄位識別碼] 屬性的值。

執行重新命名的匯入清單執行個體時,會出現錯誤

如果您重新命名匯入的清單執行個體,然後在 Visual Studio 中執行,就會發生此問題。

錯誤訊息

建置錯誤:部署步驟 [啟用功能] 發生錯誤:檔案 Template\Features\[import projectfeaturename]\Files\Lists\[oldlist name]\Schema.xml 不存在。

解決方案

當您匯入清單執行個體時,會將名為 CustomSchema 的屬性新增至清單執行個體的 Elements.xml 檔案。 Elements.xml 包含清單執行個體之自訂 schema.xml 的路徑。 當您在 Visual Studio 中重新命名清單執行個體時,自訂 schema.xml 的部署路徑會變更,但 CustomSchema 屬性的路徑值不會更新。 因此,啟用功能時,清單執行個體無法在 CustomSchema 屬性所指定的舊路徑中找到 schema.xml 檔案。

若要解決此問題,請更新 CustomSchema 屬性中 schema.xml 檔案的部署位置路徑。

已由 IIS 終止的 SharePoint 偵錯工作階段

如果您在 Visual Studio SharePoint 方案中設定中斷點、選擇 [F5] 鍵執行,然後停留在中斷點的時間超過 90 秒,就會發生這個問題。

錯誤訊息

正在偵錯的 Web 服務器處理序已由 Internet Information Services (IIS) 終止。 您可以在 IIS 中設定應用程式集區 Ping 設定來避免這個問題發生。 如需進一步的詳細資料,請參閱說明。

解決方案

根據預設,IIS 應用程式集區會等候 90 秒,以等待應用程式回應,然後再關閉應用程式。 此程序稱為「偵測」應用程式。 若要解決此問題,您可以增加等候時間或完全停用應用程式偵測。

若要存取 IIS 應用程式集區設定

  1. 開啟 [IIS 管理員]。

  2. 在 [連線] 窗格中展開 SharePoint 伺服器節點,然後選擇 [應用程式集區] 節點。

  3. 在 [應用程式集區] 頁面上,選擇 SharePoint 應用程式集區 (通常是「SharePoint - 80」),然後在 [動作] 窗格中,選擇 [進階設定] 連結。

  4. 若要增加 IIS 逾時之前的等候時間,請將 [Ping 回應時間上限 (秒)] 的值變更為 90 秒以上的值。

  5. 若要停用 IIS 偵測,請將 [啟用 Ping] 設定為 [False]

自動撤銷會在 SharePoint 中留下孤立的清單執行個體

如果您採取下列步驟,就會發生此問題。

  1. 在 Visual Studio 中建立具有清單執行個體的清單定義。

  2. 選擇 [F5] 鍵執行方案。

  3. 停止偵錯,或關閉 SharePoint 網站。

  4. 重新開啟 SharePoint 網站並開啟清單執行個體。

錯誤訊息

'/' 應用程式中的伺服器錯誤。

解決方案

這是因為關閉 SharePoint 方案的偵錯工作階段之後,自動撤銷功能會撤銷方案。 撤銷會從 SharePoint 刪除清單定義,但不會刪除清單的執行個體。 清單執行個體需要基礎清單定義。

若要解決此問題,請選擇功能表列上的 [建置]>[部署] 來部署方案。 (請勿選擇 [F5] 鍵對方案進行偵錯。)然後,刪除 SharePoint 中的清單執行個體。

原始 SharePoint 方案會由匯出的版本取代

如果您匯出 SharePoint 方案,請將方案匯入 Visual Studio,然後將方案部署回匯出所在的相同網站,則會取代原始的 SharePoint 方案。 如果您將方案部署到伺服器上未啟動原始方案的伺服器,就不會發生此問題。

錯誤訊息

無。

解決方案

若要避免在匯出方案的網站上覆寫方案,請變更 SolutionID 的 GUID 和 Visual Studio 專案中所有匯入功能的功能識別碼。

偵錯開始時出現錯誤

當您在 Visual Studio 中開始對 SharePoint 方案進行偵錯時出現錯誤,指出 Visual Studio 無法載入 Web.config 組態檔,因為所指的金鑰不在目錄中。

錯誤訊息

無法載入 Web.config 設定檔。 檢查檔案中是否有任何格式錯誤的 XML 元素,然後再試一次。 發生下列錯誤:字典中沒有指定的索引鍵。

解決方案

若要解決此問題,請確定 Visual Studio 中 SharePoint 專案的 [網站 URL] 屬性值符合指派給 Web 應用程式之備用存取對應預設區域的 URL。 使用另一個區域 (例如內部網路) 做為 URL 無法解決此錯誤。 專案的網站 URL 和預設區域中的 URL 必須相符。 若要存取備用存取對應,請開啟 SharePoint 2010 管理中心公用程式,選擇 [應用程式管理] 連結,然後在 [Web 應用程式] 下選擇 [設定備用存取對應] 連結。 如需更多資訊,請參閱建立 Web 應用程式的區域