Project 中 WCF 型程式代碼範例的必要條件
瞭解如何使用 Project Server Interface (PSI) 參考主題中包含的 WCF 型程式代碼範例,協助您在 Visual Studio 中建立專案。
Project Server 2013 類別庫和 Web 服務參考中包含的許多 WCF 型程式代碼範例,原本是針對 Project 2010 開發人員檔所建立,並使用 WCF Web 服務的標準格式。 這些範例仍可在 Project Server 2013 中運作,並設計為複製到控制台應用程式,並以完整單元執行。 範例中會記下例外狀況。
Project 2013 開發人員檔中的程式代碼範例,與針對 Office Project Server 2007 開發的範例未變更,會使用 ASMX Web 服務。 ASMX 型範例也可以調整為使用 WCF 服務。 本文說明如何搭配 WCF 服務使用範例。 如需如何搭配 ASMX Web 服務使用範例的資訊,請參閱 Project 中 ASMX 型程式代碼範例的必要條件。
注意事項
如果客戶端物件模型 (CSOM) 包含應用程式所需的方法,則應該使用 CSOM 開發新的應用程式。 CSOM 可讓應用程式使用 project Server 2013 的 Project Online 或內部部署安裝。 否則,如果您的應用程式使用 PSI,它應該使用 WCF 介面,這是我們建議用於網路通訊的技術。 使用 ASMX 介面或 WCF 介面的應用程式只能用於 Project Server 2013 的內部部署安裝。
如需 CSOM 的詳細資訊,請參閱 Project Server 2013 架構 和 客戶端物件模型 (Project 2013 的 CSOM) 。
執行程式代碼範例之前,您必須先設定開發環境、設定應用程式、新增服務組態檔 (或以程式設計方式設定 WCF 服務) ,以及變更一般常數值以符合您的環境。
設定開發環境
設定測試 Project Server 系統。
每當您正在開發或測試時,請使用測試 Project Server 系統。 即使您的程式代碼運作完美,專案間相依性、報告或其他環境因素也可能會造成非預期的後果。
注意事項
請確定您是伺服器上的有效使用者,並確認您有足夠的許可權可供應用程式使用的 PSI 呼叫使用。 每個 PSI 方法的開發人員檔案主題都包含 Project Server 許可權數據表。 例如, Project.QueueCreateProject 方法需要全域 NewProject 權 限和 SaveProjectTemplate 權 限。
在某些情況下,您可能必須在伺服器上執行遠端偵錯。 您可能也必須設定事件處理程式,方法是在 SharePoint 伺服器數位中的每部 Project Server 計算機上安裝事件處理程式元件,然後使用 SharePoint 管理中心 [一般應用程式設定] 中的 [Project Server 設定] 頁面,設定 Project Web App 實例的事件處理程式。
設定開發電腦。
您通常會透過網路存取 PSI。 程式代碼範例的設計目的是要在不同於伺服器的用戶端上執行,但註明的位置除外。
安裝正確的 Visual Studio 版本。 除了註明之外,程式代碼範例是以 Visual C# 撰寫。 它們可以與Visual Studio 2010或Visual Studio 2012搭配使用。 請確定您已安裝最新的 Service Pack。
將 Project Server DLL 複製到開發電腦。 將下列元件從
[Program Files]\Microsoft Office Servers\15.0\Bin
Project Server 電腦複製到開發電腦:Microsoft.Office.Project.Server.Events.Receivers.dll
Microsoft.Office.Project.Server.Library.dll
如需如何在 PSI 中編譯和使用 WCF 服務的 ProjectServerServices.dll Proxy 元件的相關信息,請參閱 使用 PSI Proxy 元件和 IntelliSense 描述。
安裝 IntelliSense 檔案。
若要針對 Project Server 元件中的類別和成員使用 IntelliSense 描述,請從 Project 2013 SDK 下載將更新的 IntelliSense XML 檔案複製到 Project Server 元件所在的相同目錄。 例如,將 Microsoft.Office.Project.Server.Library.xml 檔複製到您的應用程式將設定 Microsoft.Office.Project.Server.Library.dll 元件參考的目錄。
PSI 服務的 IntelliSense 描述會要求您在 Project 2013 SDK 下載的 子目錄中
Documentation\IntelliSense\WCF
使用CompileWCFProxyAssembly.cmd腳本來建立 PSI Proxy 元件。 腳本會建立以 WCF 為基礎的 ProjectServerServices.dll Proxy 元件。 如需詳細資訊,請參閱 SDK 下載中的 [ReadMe_IntelliSense].mht 檔案。
建立應用程式並新增服務參考
建立主控台應用程式。
當您建立主控台應用程式時,請在 [新增專案] 對話方塊的下拉式清單中,選取 [.NET Framework 4]。 您可以將 PSI 範例程式代碼複製到新的應用程式。
新增 WCF 所需的參考。
在 方案總管 中,新增 System.ServiceModel 的參考 (請參閱圖 1) 。 Web 應用程式會使用 System.ServiceModel.Web。
同時新增 System.Runtime.Serialization 的參考。
圖 1: 在 Visual Studio 中為以 WCF 為基礎的應用程式新增參考
複製程序代碼。
將完整的程式代碼範例複製到主控台應用程式的Program.cs檔案中。
設定範例應用程式的命名空間。
您可以將範例頂端所列的命名空間變更為應用程式預設命名空間,或變更預設應用程式命名空間以符合範例。 您可以變更應用程式屬性來變更預設應用程式命名空間。
例如, ReadResource 的程式代碼範例具有命名空間 Microsoft.SDK.Project.Samples.CreateResourceTest。 如果 Visual Studio 項目的名稱是 ResourceTest,請從Program.cs檔案複製命名空間,然後在 [專案] 功能表上開啟 [項目屬性] 窗格 (,選擇 [ResourceTest 屬性]) 。 在 [ 應用程式] 索 引標籤上,將命名空間複製到 [ 預設命名空間 ] 文字框中。
設定服務參考。
許多範例都需要參考一或多個 PSI 服務。 這些會列在範例本身或範例前面的批注中。 若要取得服務參考的正確命名空間,請確定您先設定預設的應用程式命名空間。
新增 WCF 服務參考的方法有三種:
建置名為 ProjectServerServices.dll 的 PSI Proxy 元件,然後設定元件的參考。 請參閱 使用 PSI Proxy 元件和 IntelliSense 描述。
從 svcutil.exe 輸出將 Proxy 檔案新增至 Visual Studio 方案。 請參閱 新增 PSI Proxy 檔案。
使用 Visual Studio 新增服務參考。 請參閱 新增服務參考。
使用 PSI Proxy 元件和 IntelliSense 描述
您可以針對 PSI 中的所有公用 WCF 服務使用 Proxy 元件。 使用 Documentation\IntelliSense\WCF\CompileWCFProxyAssembly.cmd
Project 2013 SDK 下載中的腳本編譯 ProjectServerServices.dll Proxy 元件,然後將 Proxy 元件複製到您的開發計算機。 將 IntelliSense 的 ProjectServerServices.xml 檔案複製到相同的位置。 在 Visual Studio 中,設定 ProjectServerServices.dll Proxy 元件的參考。
針對 Project Server Service Pack 和更新,您可以使用相同 SDK 下載資料夾中的GenWCFProxyAssembly.cmd腳本來更新 Proxy 來源檔案並建立新的 Proxy 元件。 如需 SDK 下載的連結,請參閱 Project 2013 開發人員檔。 如需詳細資訊,請參閱 新增服務參考一 節。
注意事項
當您從 Source.zip 檔擷取 Proxy 來源檔案時,從 Project 2013 SDK 下載的發行日期起,資料夾中的 Documentation\IntelliSense\WCF\Source
檔案是最新的。 若要產生更新的 PSI Proxy 來源檔案,請在 Project Server 計算機上執行GenASMXProxyAssembly.cmd腳本。 如需詳細資訊,請參閱 新增服務參考。
資料夾中的 Documentation\IntelliSense\ASMX
文稿不適用於以 WCF 為基礎的應用程式。 GenASMXProxyAssembly.cmd腳本會呼叫 Wsdl.exe,這會產生 ASMX 服務的原始碼檔案。 ASMX Proxy 檔案包含不同的類別和屬性。 例如,ASMX 型資源 Web 服務包含 Resource 類別,而 WCF 型資源服務則包含 資源 介面、 ResourceChannel 介面和 ResourceClient 類別。
為 ASMX Web 服務和 WCF 服務建立的任意命名空間是相同的,因此 IntelliSense 的 ProjectServerServices.xml 檔案可與任一元件搭配運作。 例如,WCF 型 Proxy 元件和 ASMX 型 Proxy 元件中資源服務的命名空間是 SvcResource。 當然,您可以變更命名空間名稱—如果您確定它們在 Proxy 元件和 ProjectServerServices.xml IntelliSense 檔案中相符。
如果程式代碼範例針對 PSI 服務命名空間使用不同的名稱,例如 ProjectWebSvc,若要讓 IntelliSense 能夠運作,您必須將範例變更為使用 SvcProject ,使命名空間符合 Proxy 元件。
使用 WCF 型 Proxy 元件的優點包括:
您可以在與 Project Server 電腦不同的電腦上使用 Proxy 元件來開發大部分的解決方案。 設定個別的服務參考需要在 Project Server 計算機上進行開發。
Proxy 元件包含所有 PSI 服務命名空間,因此您不需要新增多個 Proxy 檔案。
如果您將 ProjectServerServices.xml 檔案新增至設定 ProjectServerServices.dll Proxy 元件參考的相同目錄,您可以取得 PSI 類別和成員的 IntelliSense 描述。 如需詳細資訊,請參閱 Project 2013 SDK 下載資料夾中的
Documentation\IntelliSense
[ReadMe_IntelliSense] 檔案。
圖 2: 針對資源服務中的方法使用 IntelliSense
使用 Proxy 元件的缺點是解決方案較大,而且您必須使用解決方案來散發和安裝 Proxy 元件。 您也必須使用 Proxy 元件和 IntelliSense 檔案中的相同命名空間,除非您將腳本變更為建置 Proxy 元件,並將 ProjectServerServices.xml IntelliSense 檔案變更為使用不同的命名空間。
新增 PSI Proxy 檔案
Project 2013 SDK 下載包含 Proxy 元件的 SvcUtil.exe 命令所產生的原始程序檔。 來源檔案位於 子目錄中的 Source.zip 檔中 Documentation\IntelliSense\WCF
。 您可以將一或多個原始程序檔新增至 Visual Studio 方案,而不是設定 Proxy 元件的參考。 例如,若要使用 Project 服務和資源服務,請新增 wcf。Project.cs和 wcf。將檔案Resource.cs至方案。
在 WCF 中,每個 PSI 服務中的主要類別是由介面所定義,並在用戶端類別中實作以存取成員。 例如, SvcProject.Resource 介面是在 SvcProject.ResourceClient 類別中實作。 例如,若要將 ResourceClient 物件定義為名為 resourceClient 的類別變數,請使用下列程式代碼。 在此範例中, SetClientEndpoints 方法會建立 resourceClient 物件,該物件使用 basicHttp_Project 端點,其定義於 app.config 檔案中。 如需 app.config 檔案的詳細資訊,請參閱 新增服務組態檔一 節。
private static SvcResource.ResourceClient resourceClient;
. . .
private static void SetClientEndpoints()
{
resourceClient = new SvcResource.ResourceClient("basicHttp_Resource");
. . .
}
public void DisposeClients()
{
resourceClient.Close();
. . .
}
注意事項
不論您是使用 PSI Proxy 元件或為名為 SvcResource 的 Project 服務參考新增 Proxy 檔案,您都會使用相同的程式代碼來建立和處置 resourceClient 物件。
Adding a service reference
如果您未使用 WCF 型 Proxy 元件或新增 PSI 服務的 Proxy 檔案,您可以直接在 Visual Studio 中設定一或多個個別服務參考。 您也可以使用下列程式的步驟 1 來建立更新的 Proxy 檔案,以準備 Documentation\IntelliSense\WCF\GenWCFProxyAssembly.cmd
Project 2013 SDK 下載中包含的腳本。
注意事項
若要設定服務參考,您必須在 Project Server 計算機上使用 Visual Studio。 建議您使用 ProjectServerServices.dll Proxy 元件或新增 Proxy 來源檔案,而不是直接在 Visual Studio 中新增服務參考。
下列步驟示範如何在執行 Project Server 測試安裝的計算機上使用 Visual Studio 2012 設定服務參考:
若要取得後端 WCF 服務的存取權,請在 Project Server 計算機上執行 Visual Studio。
在 方案總管 中,以滑鼠右鍵按兩下 [參考] 資料夾,然後選擇 [新增服務參考]。
在 [ 新增服務參考 ] 對話框的 [ 位址 ] 文本框中,輸入 <
https://localhost:32843/
>GUID/psi/ ServiceName.svc,然後按 Enter。 將 GUID 取代為 Project Server 服務應用程式的虛擬目錄名稱,例如 534c37eb00d74ccfadcecf9827e95239。 以服務名稱取代 ServiceName ,例如資源 (請參閱圖 3) 。您可以透過下列其中一種方式取得 Project Server 服務虛擬目錄的名稱:
在瀏覽器中開啟 SharePoint 2013 管理中心應用程式。 選擇 [管理服務應用程式],然後選擇您想要的 Project Server PSI 服務應用程式。 例如,選擇 [ProjectServerService]。 [管理 Project Web App 網站] 頁面的 URL 包含虛擬目錄名稱。 例如,在
https://ServerName:8080/_admin/pwa/managepwa.aspx?appid=534c37eb-00d7-4ccf-adce-cf9827e95239
中,虛擬目錄名稱是534c37eb00d74ccfadcecf9827e95239
(目錄名稱不包含虛線) 。在 Project Server 計算機上開啟 [ Internet Information Services (IIS) Manager ] 對話框。 展開 [Connections] 窗格中的 [SharePoint Web 服務] 節點,然後展開該窗格下方的服務虛擬目錄,直到您找到包含 PSI 資料夾的目錄為止。 選取目錄,在 [動作] 窗格中選擇 [進階設定],然後在 [虛擬路徑] 欄位中複製目錄名稱。
注意事項
可以有一個以上的 Project Server 服務虛擬目錄。 請確定您選擇的虛擬目錄包含您想要的 Project Web App 實例。
在隨 SharePoint 2013 一起安裝的 Windows PowerShell 中使用 get-SPServiceApplication Cmdlet。 在任務欄的 [ 開始 ] 功能表上,選擇 [ 所有程式],選擇 [Microsoft SharePoint 2013 產品],然後選擇 [SharePoint 2013 管理命令介面]。 以下是 命令,以及定義之服務應用程式的 SharePoint 2013get- 管理命令介面 視窗中的結果, (您的 GUID 會不同) 。 複製 Project Server 服務應用程式的 GUID。
PS > get-SPServiceApplication DisplayName TypeName Id ----------- -------- -- State Service State Service 04041cfa-4ab3-4473-8bc8-3967b02eff39 ProjectServerSer... Project Server PS... 534c37eb-00d7-4ccf-adce-cf9827e95239 Security Token Se... Security Token Se... 7243732e-edea-405d-8cc8-1716b99faef5 Application Disco... Application Disco... 3bfbdeb0-bc20-4a21-801c-cc6f1ce6c643 SharePoint Server... SharePoint Server... 09912f49-3b72-462f-a44c-6533b578286a
如果您知道 Project Server Service 應用程式的完整名稱,您可以使用它來取得 GUID 值,例如:
PS > $projectService = "ProjectServerService" PS > (get-SPServiceApplication -Name $projectService).Id Guid ---- 534c37eb-00d7-4ccf-adce-cf9827e95239
注意事項
拿掉 GUID 中的虛線以取得虛擬目錄名稱。
這類
https://localhost:32843/534c37eb00d74ccfadcecf9827e95239/PSI/Resource.svc
URL 是 Project Server 服務的標準 URL。解析服務參考之後,請在 [ 命名空間 ] 文本框中輸入參考名稱。 Project 2013 開發人員檔中的程式代碼範例會使用任意命名空間名稱 Svc ServiceName。 例如,程式代碼範例中的資源服務名為 SvcResource。
圖 3: Adding the WCF-based Resource service reference
將 Project Service 目錄中的暫存 web.config 檔取代為將原始 (重新命名為 web.config) ,然後重新執行
iisreset
。
設定其他參考
Project Server 應用程式通常會使用其他服務,例如 SharePoint 2013 Web 服務。 如果需要其他服務或參考,則會在程式碼範例中記下它們。
程式代碼範例的本機參考會列在範例頂端的 using 語句中。
在 方案總管 中,以滑鼠右鍵按兩下 [參考] 資料夾,然後選擇 [新增參考]。
選擇 [瀏覽],然後流覽至您儲存先前複製之 Project Server DLL 的位置。 選擇您想要的 DLL,然後選擇 [ 確定]。
注意事項
請確定開發電腦上的元件版本完全符合目標 Project Server 電腦上的元件版本。
新增服務組態檔
如果應用程式以程式設計方式設定 WCF 服務,則不會使用服務組態檔。 否則,Windows 應用程式或控制台應用程式會在 app.config 檔案中使用 system.serviceModel 元素;Web 應用程式在 web.config 中包含 system.serviceModel 。如需使用 app.config 檔案或以程式設計方式設定 WCF 服務的詳細資訊,請參 閱逐步解說:使用 WCF 開發 PSI 應用程式。
當它產生服務 Proxy 來源檔案時,SvcUtil.exe 命令也會建立 output.config 檔案,這是 app.config 檔案或 web.config 檔中預設 system.serviceModel 元素的基礎。 Project 2013 SDK 下載包含 中的範例 output.config 檔案 Documentation\IntelliSense\WCF\Source.zip
。 例如,SvcUtil.exe 為資源服務建立的預設 output.config 檔案包含兩個系結,名為 BasicHttpBinding_Resource 和 BasicHttpBinding_Resource1。
用戶端元素包含兩個預設端點。 其中一個端點用於安全存取埠 32843 上的 HTTP 位址,另一個端點則用於埠 32843 的正常存取,如下所示:
<client>
<endpoint address="https://ServerName.domain:32843/GUID/PSI/Resource.svc/secure"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Resource"
contract="SvcResource.Resource" name="BasicHttpBinding_Resource" />
address="https://ServerName.domain:32843/GUID/PSI/Resource.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Resource1"
contract="SvcResource.Resource" name="BasicHttpBinding_Resource1" />
</client>
PSI 服務組態不會使用預設系結和端點。 Project Server 要求應用程式透過前端 ProjectServer.svc 存取 PSI 服務,以作為呼叫後端服務的路由器。 若要建立 app.config 檔案,請執行下列步驟:
如果您設定 ProjectServerServices.dll Proxy 元件的參考,或新增服務的 Proxy 來源檔案,則應用程式不會包含 app.config 檔。 將新專案新增至 Visual Studio 專案。 在 [ 新增專案 ] 對話框中,選擇 [應用程式組態 檔 ] 範本,將它命名 app.config,然後選擇 [ 新增]。
刪除 app.config 檔案中的所有文字,然後將下列程式代碼複製到檔案中。 您可以針對每個服務端點使用相同的系結,例如
basicHttpConf
。 例如,如果您想要使用多個系結來系結 HTTP 和 HTTPS 通訊協定,您必須為每個通訊協定建立系結。<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="basicHttpBehavior"> <clientCredentials> <windows allowedImpersonationLevel="Impersonation" /> </clientCredentials> </behavior> </endpointBehaviors> </behaviors> <bindings> <basicHttpBinding> <binding name="basicHttpConf" sendTimeout="01:00:00" maxBufferSize="500000000" maxReceivedMessageSize="500000000"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="500000000" /> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Ntlm" realm="https://SecurityDomain" /> </security> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="https://ServerName/ProjectServerName/_vti_bin/PSI/ProjectServer.svc" behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding" bindingConfiguration="basicHttpConf" contract="SvcServiceName.ServiceName" name="basicHttp_ServiceName" /> </client> </system.serviceModel> </configuration>
將用戶端端點位址中的 取代
ServerName/ProjectServerName
為您的伺服器名稱和 Project Web App 實例。將 取代
ServiceName
為 PSI 服務的名稱,例如資源。 請確定您取代服務名稱的所有三個實例,例如:<endpoint address="https://myserver/pwa/_vti_bin/PSI/ProjectServer.svc" behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding" bindingConfiguration="basicHttpConf" contract="SvcResource.Resource" name="basicHttp_Resource" />
若要使用多個 PSI 服務,請為每個服務以及服務所使用的每個綁定項建立一個端點專案。 例如,下列端點會將用戶端設定為使用 Project 服務和 QueueSystem 服務的基本 HTTP 系結。
注意事項
如果您執行應用程式並收到伺服器太忙碌或 HTTP 要求未經授權的錯誤,請確定 app.config 檔案中的端點位址正確無誤。
<client> <endpoint address="https://ServerName/pwa/_vti_bin/PSI/ProjectServer.svc" behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding" bindingConfiguration="basicHttpConf" contract="SvcProject.Project" name="basicHttp_Project" /> <endpoint address="https://ServerName/pwa/_vti_bin/PSI/ProjectServer.svc" behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding" bindingConfiguration="basicHttpConf" contract="SvcQueueSystem.QueueSystem" name="basicHttp_QueueSystem" /> </client>
您可以使用 [工具] 功能表) 上 Visual Studio (中的 [WCF 服務組態] 編輯器 來編輯 app.config 檔案。 圖 4 顯示如何在 [Microsoft 服務組態 編輯器] 對話框中設定合約專案。 如果解決方案使用 PSI Proxy 元件,請在 Visual Studio 解決方案的目錄中 bin\debug
開啟 ProjectServerServices.dll。 [ 合約類型瀏覽器 ] 對話框會顯示所有 WCF 服務合約 (請參閱圖 5) 。
圖 4: Using the WCF Service Configuration Editor
如果解決方案使用服務 Proxy 檔案,例如wcfResource.cs,請編譯應用程式,然後在目錄中 bin\debug
開啟可執行檔。 如需編輯 app.config 檔案的詳細資訊,請參 閱逐步解說:使用 WCF 開發 PSI 應用程式。
圖 5: 在 WCF 服務組態中使用合約類型瀏覽器 編輯器
使用多個驗證
內部部署 Project Server 使用者的驗證,無論是透過 Windows 驗證 或窗體驗證,都是透過 SharePoint 中的宣告處理來完成。 多重驗證表示布建 Project Web App 的 Web 應用程式支援 Windows 驗證 和表單型驗證。 如果是這種情況,任何使用 Windows 驗證 的 WCF 服務呼叫都會失敗,並出現下列錯誤,因為宣告程式無法判斷要驗證的使用者類型:
The server was unable to process the request due to an internal error. For more information about the error, either turn on Include ExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.
若要修正 WCF 的問題,PSI 方法的所有呼叫都應該在針對每個 PSI 服務定義的 OperationContextScope 內。 請勿巢狀化多個服務的範圍;例如,使用對 Resource 和 Project 服務的呼叫時,每一組呼叫都應該在自己的範圍內。
在下列範例中,您可以從應用程式中的每個 OperationContextScope 區段呼叫 DisableFormsAuth 方法。 方法會移除先前停用 Forms 驗證的任何標頭值,以便在 isWindowsAuth 參數為 false 時繼續進行 Forms 驗證。 如果isWindowsAuth 為 true,DisableFormsAuth 方法會停用 Forms 驗證。
在 WcfSample 方法中, projectClient 對像是 PSI SvcProject.ProjectClient 類別的實 例。
// Class variable that determines whether to disable Forms authentication.
private bool isWindowsUser = true;
public void DisableFormsAuth(bool isWindowsAuth)
{
WebOperationContext.Current.OutgoingRequest.Headers.Remove(
"X-FORMS_BASED_AUTH_ACCEPTED");
if (isWindowsAuth)
{
// Disable Forms authentication, to enable Windows authentication.
WebOperationContext.Current.OutgoingRequest.Headers.Add(
"X-FORMS_BASED_AUTH_ACCEPTED", "f");
}
}
private void WcfSample()
{
// Limit the scope of WCF calls to the client channel.
using (OperationContextScope scope = new OperationContextScope(projectClient.InnerChannel))
{
// Add a web request header to enable Windows authentication in
// multiple authentication installations.
DisableFormsAuth(isWindowsUser);
// Add calls to the projectClient methods here:
// . . .
}
}
注意事項
只有在多個驗證環境中執行的應用程式,才需要在 OperationContextScope 內進行 PSI 呼叫。 如果 Project Server 只使用 Windows 驗證,則不需要設定範圍並新增停用窗體驗證的 Web 要求標頭。
ASMX 型應用程式的修正方式不同。 For more information, see the Using multiple-authentication section in Prerequisites for ASMX-based code samples in Project.
變更泛型常數的值
大部分的範例都有一或多個變數,您必須更新這些變數,範例才能在您的環境中正常運作。 在下列範例中,如果您已安裝 SSL,請使用 HTTPS 通訊協定,而不是 HTTP 通訊協定。 以您使用的伺服器名稱取代 ServerName 。 將 ProjectServerName 取代為您專案伺服器月臺的虛擬目錄名稱,例如 PWA。
const string PROJECT_SERVER_URI = "https://ServerName/ProjectServerName/";
程式代碼範例頂端會記下您必須變更的任何其他變數。
驗證結果
從程式代碼範例取得和解譯結果不一定很簡單。 例如,如果您建立專案,您必須先發佈專案,專案才能出現在 Project Web App 的 [專案中心] 頁面上。
您可以透過數種方式來驗證程式碼範例結果,例如:
使用 Project 專業版 2013 用戶端從 Project Server 計算機開啟專案,並檢視您想要的專案。
在 Project Web App () 的
https://ServerName/ProjectServerName/projects.aspx
[專案中心] 頁面上檢視已發佈的專案。檢視 Project Web App 中的佇列記錄。 開啟 [伺服器設定] 頁面 (選擇右上角) 的 [設定] 圖示,然後選擇 [個人設定] 區段底下的 [我已排入佇列的作業] 區段 (
https://ServerName/ProjectServerName/MyJobs.aspx
) 。 在 [ 檢視] 下拉式清單中,您可以依作業狀態排序。 默認狀態為 [進行中] 和 [過去一周失敗的作業]。使用 Project Web App ()
https://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx
中的 [伺服器設定] 頁面來管理所有佇列作業,以及刪除或強制簽入企業物件。 您必須具有系統管理許可權,才能在 [伺服器設定] 頁面上存取這些連結。使用 Microsoft SQL Server Management Studio 在 Project Server 資料庫的數據表上執行查詢。 例如,使用下列查詢來選取MSP_WORKFLOW_STAGE_PDPS數據表的前 200 個數據列,以顯示工作流程階段中 PDP) (專案詳細數據頁面的相關信息。
SELECT TOP 200 [STAGE_UID]
,[PDP_UID]
,[PDP_NAME]
,[PDP_POSITION]
,[PDP_ID]
,[PDP_STAGE_DESCRIPTION]
,[PDP_REQUIRES_ATTENTION]
FROM [ProjectService].[pub].[MSP_WORKFLOW_STAGE_PDPS]
清除
測試一些程式代碼範例之後,應該刪除或重設企業對象和設定。 您可以使用 Project Web App 中的 [伺服器設定] 頁面來管理企業數據 ( https://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx
) 。 [伺服器設定] 頁面上的連結可讓您刪除舊專案、強制簽入專案、管理所有使用者的作業佇列,以及執行其他系統管理工作。
以下是在執行程式代碼範例之後,要用於一般清除活動的 [伺服器設定] 頁面上的一些連結:
企業自訂欄位與查閱表格
管理佇列工作
刪除企業物件
強制存回企業物件
企業項目類型
工作流程階段
工作流程階段
專案詳細數據頁面
時程表期間
時程表設定及預設值
線條分類
其他設定是由 SharePoint Server 2013 針對每個 Project Web App 實例管理,而不是由特定 Project Web App 伺服器設定頁面管理。 在 SharePoint 管理中心應用程式中,選擇 [一般應用程式設定],選擇 [Project Server 設定] 底下的 [管理],然後在 [伺服器設定] 頁面的下拉式清單中選擇 Project Web App 實例。 例如,選擇 [伺服器端事件處理程式] 來新增或刪除所選取 Project Web App 實例的事件處理程式。