プロジェクト内の ASMX ベースのコード サンプルの前提条件Prerequisites for ASMX-based code samples in Project

プロジェクト Server インターフェイス (PSI) のリファレンス トピックに含まれている ASMX ベースのコード サンプルを使用して Visual Studio でプロジェクトを作成するための情報について説明します。Learn information to help you create projects in Visual Studio by using the ASMX-based code samples that are included in the Project Server Interface (PSI) reference topics.

Project Server 2013 のクラス ライブラリと web サービスを参照するに含まれているコード サンプルの多くは、Office プロジェクト 2007 SDK で作成され、ASMX web サービスの標準的な形式を使用します。Many of the code samples included in the Project Server 2013 class library and web service reference were originally created for the Office Project 2007 SDK, and use a standard format for ASMX web services. まだサンプルは、Project Server 2013 での作業し、コンソール アプリケーションにコピーし、完全な単位として実行するように設計されています。The samples still work in Project Server 2013 and are designed to be copied into a console application and run as a complete unit. サンプルで例外が記載されています。Exceptions are noted in the sample.

Project 2013 SDK の新しい PSI のサンプルは、Windows Communication Foundation (WCF) サービスを使用する形式に準拠しています。New PSI samples in the Project 2013 SDK conform to a format that uses Windows Communication Foundation (WCF) services. ASMX ベースのサンプルは、WCF サービスの使用に適合させることができます。The ASMX-based samples can also be adapted to use WCF services. この資料では、ASMX web サービスのサンプルを使用する方法を示します。This article shows how to use the samples with ASMX web services. サンプルの WCF サービスの使用方法の詳細については、プロジェクト内の WCF ベースのコード サンプルの前提条件を参照してください。For information about using the samples with WCF services, see Prerequisites for WCF-based code samples in Project.

注意

PSI の ASMX web サービスのインタ フェースは、Project Server 2013 のでは使用されなくなりましたはまだサポートされています。The ASMX web service interface of the PSI is deprecated in Project Server 2013, but is still supported. クライアント側オブジェクト モデル (CSOM) では、アプリケーションを必要とするメソッドが含まれている場合、CSOM で新しいアプリケーションを開発する必要があります。If the client-side object model (CSOM) includes the methods that your application requires, new applications should be developed with the CSOM. CSOM は、プロジェクトのオンラインまたは Project Server 2013 のオンプレミス インストールを操作するアプリケーションを有効にします。The CSOM enables applications to work with Project Online or an on-premises installation of Project Server 2013. それ以外の場合、アプリケーションは、PSI を使用する場合は、WCF インターフェイスは、ネットワーク通信のことをお勧めする技術であるを使用してください。Otherwise, if your application uses the PSI, it should use the WCF interface, which is the technology that we recommend for network communications. ASMX インターフェイスまたは WCF インターフェイスを使用するアプリケーションは、Project Server 2013 のオンプレミスのインストールでのみ操作できます。Applications that use the ASMX interface or the WCF interface can work only for on-premises installations of Project Server 2013. CSOM の詳細については、 Project Server 2013 のアーキテクチャおよびProject 2013 のクライアント側オブジェクト モデル (CSOM)を参照してください。For more information about the CSOM, see Project Server 2013 architecture and Client-side object model (CSOM) for Project 2013.

コード サンプルを実行する前には、開発環境を設定し、アプリケーションを構成し、環境に一致するように一般的な定数の値を変更する必要があります。Before running the code samples, you must set up the development environment, configure the application, and change generic constant values to match your environment.

開発環境を設定するSetting up the development environment

  1. テスト プロジェクトのサーバー システムを設定します。Set up a test Project Server system.

    開発やテストを行う際には常にテスト Project Server システムを使用します。たとえコードが完全に動作しても、プロジェクト間の依存関係、レポート、またはその他の環境要因が意図しない結果を引き起こす可能性があります。Use a test Project Server system whenever you are developing or testing. Even when your code works perfectly, interproject dependencies, reporting, or other environmental factors can cause unintended consequences.

    注意

    確認して、サーバー上の有効なユーザーは、PSI の呼び出し、アプリケーションを使用するための十分なアクセス許可があることを確認します。Ensure that you are a valid user on the server, and check that you have sufficient permissions for the PSI calls that your application uses. 各 PSI メソッドのリファレンス トピックには、プロジェクトのサーバーのアクセス許可のテーブルが含まれています。The reference topic for each PSI method includes a Project Server Permissions table. などのProject.QueueCreateProjectメソッドには、新しいプロジェクトグローバル アクセス権と、 SaveProjectTemplateアクセス許可が必要です。For example, the Project.QueueCreateProject method requires the global NewProject permission and the SaveProjectTemplate permission.

    場合によっては、サーバー上でリモート デバッグを実行する必要があります。In some cases, you may have to do remote debugging on the server. SharePoint ファーム内の各プロジェクトのサーバー コンピューター上のイベント ハンドラー アセンブリをインストールして、一般に、プロジェクトのサーバーの設定] ページを使用して、Project Web App インスタンスのイベント ハンドラーを構成して、イベント ハンドラーを設定する必要がありますもSharePoint サーバーの管理のアプリケーションの設定です。You may also have to set up an event handler by installing an event handler assembly on each Project Server computer in the SharePoint farm, and then configuring the event handler for the Project Web App instance by using the Project Server Settings page in the General Application Settings of SharePoint Central Administration.

  2. 開発用コンピューターを設定します。Set up a development computer.

    通常、PSI にはネットワーク経由でアクセスします。コード サンプルは、記載されている場合を除き、サーバーから分離されたクライアントで動作するように作られています。You usually access the PSI through a network. The code samples are designed to be run on a client that is separate from the server, except where noted.

    1. Visual Studio の適切なバージョンをインストールします。Install the correct version of Visual Studio. 場合を除き、これらのコードが書き込まれます Visual C# で。Except where noted, the code samples are written in Visual C#. Visual Studio 2010 または Visual Studio 2012 では、それらを使用できます。They can be used with Visual Studio 2010 or Visual Studio 2012. 最新のサービス パックのインストールがあることを確認します。Ensure that you have the most recent service pack installed.

    2. プロジェクト サーバー Dll を開発用コンピューターにコピーします。Copy Project Server DLLs to the development computer. 次のアセンブリをコピーする[Program Files]\Microsoft Office Servers\15.0\Bin開発用コンピューターに Project Server コンピューターにします。Copy the following assemblies from [Program Files]\Microsoft Office Servers\15.0\Bin on the Project Server computer to the development computer:

      • Microsoft.Office.Project.Server.Events.Receivers.dllMicrosoft.Office.Project.Server.Events.Receivers.dll
      • Microsoft.Office.Project.Server.Library.dllMicrosoft.Office.Project.Server.Library.dll
    3. コンパイルし、PSI の ASMX web サービスの ProjectServerServices.dll のプロキシ アセンブリを使用する方法の詳細については、 PSI プロキシ アセンブリおよび IntelliSense の説明を使用して参照してください。For information about how to compile and use the ProjectServerServices.dll proxy assembly for the ASMX web services in the PSI, see Using a PSI proxy assembly and IntelliSense descriptions.

  3. IntelliSense ファイルをインストールします。Install the IntelliSense files.

    Project 2013 SDK から更新された IntelliSense XML ファイルは、コピーである Project Server アセンブリのクラスとメンバーの IntelliSense の説明を使用するには、Project Server アセンブリが配置されている同じディレクトリにダウンロードします。To use IntelliSense descriptions for classes and members in Project Server assemblies, copy the updated IntelliSense XML files from the Project 2013 SDK download to the same directory where the Project Server assemblies are located. たとえば、アプリケーションが Microsoft.Office.Project.Server.Library.dll アセンブリへの参照に設定されているディレクトリに Microsoft.Office.Project.Server.Library.xml ファイルをコピーします。For example, copy the Microsoft.Office.Project.Server.Library.xml file to the directory where your application will set a reference to the Microsoft.Office.Project.Server.Library.dll assembly.

    PSI web サービス用の IntelliSense の説明で CompileASMXProxyAssembly.cmd スクリプトを使用して、PSI プロキシ アセンブリを作成することを必要とする、 Documentation\IntelliSense\WSDL Project 2013 SDK ダウンロードのサブディレクトリです。IntelliSense descriptions for the PSI web services require that you create a PSI proxy assembly by using the CompileASMXProxyAssembly.cmd script in the Documentation\IntelliSense\WSDL subdirectory in the Project 2013 SDK download. スクリプトは、ProjectServerServices.dll の ASMX ベースのプロキシ アセンブリを作成します。The script creates the ASMX-based ProjectServerServices.dll proxy assembly. 詳細については、SDK ダウンロードの [ReadMe_IntelliSense] ファイルを参照してください。For more information, see the [ReadMe_IntelliSense] file in the SDK download.

アプリケーションを作成して Web サービス参照を追加するCreating the application and adding a web service reference

  1. コンソール アプリケーションを作成しますCreate a console application.

    [新しいプロジェクト] ダイアログ ボックスのドロップダウン ボックスの一覧で、コンソール アプリケーションを作成するときは、 .NET Framework 4を選択します。When you create a console application, in the drop-down list of the New Project dialog box, select .NET Framework 4. 新しいアプリケーションには、PSI のコード例をコピーできます。You can copy the PSI example code into the new application.

  2. Asmx サービスに必要な参照を追加します。Add the reference required for ASMX.

    ソリューション エクスプ ローラーで、 System.Web.Servicesへの参照を追加します (図 1 を参照してください)。In Solution Explorer, add a reference to System.Web.Services (see Figure 1).

    図 1 です。Visual Studio で参照を追加します。Figure 1. Adding a reference in Visual Studio

    Visual Studio で参照を追加します。Adding a reference in Visual Studio

  3. コードをコピーします。Copy the code.

    コード サンプル全体をコンソール アプリケーションの Program.cs ファイルにコピーします。Copy the complete code example into the Program.cs file of the console application.

  4. サンプル アプリケーションの名前空間を設定します。Set the namespace for the sample application.

    サンプルの上部に記されている名前空間をアプリケーションの既定の名前空間に変更するか、アプリケーションの既定の名前空間をサンプルに合わせて変更することができます。アプリケーションの既定の名前空間は、アプリケーションのプロパティを変更することによって変更できます。You can either change the namespace listed at the top of the sample to the application default namespace, or change the default application namespace to match the sample. You can change the default application namespace by changing the application properties.

    たとえば、 QueueRenameProjectのコード サンプルは、 Microsoft.SDK.Project.Samples.RenameProject名前空間を持っています。For example, the code sample for QueueRenameProject has the namespace Microsoft.SDK.Project.Samples.RenameProject. Visual Studio プロジェクトの名前がRenameProjectの場合は、Program.cs ファイルから名前空間をコピーし、プロジェクトのプロパティ] ウィンドウを開きます ( [プロジェクト] メニューで、 RenameProject のプロパティ] をクリックすると)。If the name of the Visual Studio project is RenameProject, copy the namespace from the Program.cs file, and then open the project Properties pane (on the Project menu, choose RenameProject Properties). [アプリケーション] タブで、名前空間を既定の名前空間] テキスト ボックスにコピーします。On the Application tab, copy the namespace into the Default namespace text box.

  5. Web 参照を設定します。Set the web references.

    多くの例では、1 つ以上の PSI Web サービスへの参照が必要です。これらは、サンプル自体、またはサンプルの前にあるコメントに示されています。Web 参照の適切な名前空間を取得するには、最初にアプリケーションの既定の名前空間を設定する必要があります。Most examples require a reference to one or more of the PSI web services. These are listed in the sample itself or in comments that precede the sample. To get the correct namespace of the web references, ensure that you first set the default application namespace.

    PSI の ASMX Web サービス参照を追加する方法として次の 3 つがあります。There are three ways to add an ASMX web service reference for the PSI:

Intellisense の説明を備えた PSI プロキシ アセンブリを使用するUsing a PSI proxy assembly and IntelliSense descriptions

ビルドしてで CompileASMXProxyAssembly.cmd スクリプトを使用して、PSI の ASMX ベース web サービスをすべての ProjectServerServices.dll のプロキシ アセンブリを使用して、 Documentation\IntelliSense\WSDL Project 2013 SDK ダウンロードのフォルダーです。You can build and use the ProjectServerServices.dll proxy assembly for all ASMX-based web services in the PSI, by using the CompileASMXProxyAssembly.cmd script in the Documentation\IntelliSense\WSDL folder of the Project 2013 SDK download. ダウンロードへのリンクでは、 Project 2013 開発者向けドキュメントを参照してください。For a link to the download, see Project 2013 developer documentation.

注意

Source.zip からプロキシ ソース ファイルを抽出するときにファイル内のファイル、Documentation\IntelliSense\WSDL\Sourceは、Project 2013 SDK ダウンロードの発行日時点で現在のフォルダーです。When you extract the proxy source files from the Source.zip file, the files in the Documentation\IntelliSense\WSDL\Source folder are current as of the publication date of the Project 2013 SDK download. 生成するには、PSI プロキシ ソース ファイルは、Project Server コンピューター上の GenASMXProxyAssembly.cmd スクリプトの実行を更新しました。To generate updated PSI proxy source files, run the GenASMXProxyAssembly.cmd script on the Project Server computer. 内のスクリプト、Documentation\IntelliSense\WCFフォルダーは、ASMX ベースのアプリケーションでは機能しません。The scripts in the Documentation\IntelliSense\WCF folder do not work for ASMX-based applications. GenWCFProxyAssembly.cmd スクリプトでは、WCF サービスのソース コード ファイルを生成する、SvcUtil.exe を呼び出します。The GenWCFProxyAssembly.cmd script calls SvcUtil.exe, which generates source code files for the WCF services. WCF プロキシ ファイルには、さまざまな属性、チャネル ・ インタ フェース、および各 PSI サービス用のクライアント クラスが含まれます。The WCF proxy files include different attributes, the channel interface, and a client class for each PSI service. たとえば、WCF ベースのリソースのサービスには、 ResourceChannelインターフェイス、リソースインターフェイス、およびResourceClientのクラスが含まれています。For example, the WCF-based Resource service includes the ResourceChannel interface, the Resource interface, and the ResourceClient class. リソースの ASMX ベース web には、いくつかの異なるプロパティを使用してリソースクラスが含まれています。The ASMX-based Resource web includes the Resource class with some different properties.

次に、GenASMXProxyAssembly.cmd スクリプトを示します。このスクリプトは、PSI Web サービスの WSDL 出力ファイルを生成した後、アセンブリをコンパイルします。Following is the GenASMXProxyAssembly.cmd script that generates WSDL output files for the PSI web services, and then compiles the assembly.

@echo off
@ECHO ---------------------------------------------------
@ECHO Creating C# files for the ASMX-based proxy assembly
@ECHO ---------------------------------------------------
REM Replace ServerName with the name of the server and 
REM the instance name of Project Web App. Do not use localhost.
(set VDIR=http://ServerName/pwa/_vti_bin/psi)
(set OUTDIR=.\Source)
REM ** Wsdl.exe is the same version in the v6.0A and v7.0A subdirectories. 
(set WSDL="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\wsdl.exe")
if not exist %OUTDIR% (
md %OUTDIR%
)
for /F %%i in (Classlist_asmx.txt) do %WSDL% /nologo /l:CS /namespace:Svc%%i /out:%OUTDIR%\wsdl.%%i.cs %VDIR%/%%i.asmx?wsdl 
@ECHO ----------------------------
@ECHO Compiling the proxy assembly
@ECHO ----------------------------
(set SOURCE=%OUTDIR%\wsdl)
(set CSC=%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe)
(set ASSEMBLY_NAME=ProjectServerServices.dll)
%CSC% /t:library /out:%ASSEMBLY_NAME% %SOURCE%*.cs

スクリプトは ClassList_asmx.txt ファイルを使用します。このファイルには、サードパーティのデベロッパーが使用できる Web サービスのリストが含まれています。The script uses the ClassList_asmx.txt file, which contains the list of web services that are available for third-party developers.

Admin
Archive
Calendar
CubeAdmin
CustomFields
Driver
Events
LoginForms
LoginWindows
LookupTable
Notifications
ObjectLinkProvider
PortfolioAnalyses
Project
QueueSystem
ResourcePlan
Resource
Security
Statusing
TimeSheet
Workflow
WssInterop

このスクリプトは ProjectServerServices.dll という名前のアセンブリを作成します。WCF ベースのアセンブリ用の ProjectServerServices.dll と混同しないようにしてください。ProjectServerServices.xml IntelliSense ファイルを使用していずれかのアセンブリの使用を有効にする場合、アセンブリ名は同じです。The scripts create an assembly named ProjectServerServices.dll. Avoid confusing it with ProjectServerServices.dll for the WCF-based assembly. The assembly names are the same, to enable using either assembly with the ProjectServerServices.xml IntelliSense file.

ASMX web サービスと WCF サービスの両方のスクリプトが作成した任意の名前空間は、どちらかのアセンブリの IntelliSense の ProjectServerServices.xml ファイルが機能するようにします。The arbitrary namespace created by the scripts for both the ASMX web services and the WCF services is the same, so that the ProjectServerServices.xml IntelliSense file works with either assembly. ASMX ベースのプロキシ アセンブリの WCF ベースのプロキシ アセンブリ内のリソース サービスの名前空間はSvcResourceです。For example, the namespace of the Resource service in the WCF-based proxy assembly and in the ASMX-based proxy assembly is SvcResource. 名前空間の名前を変更することができます、もちろん、-プロキシ アセンブリおよび IntelliSense の ProjectServerServices.xml ファイルに一致しているかどうかを確認します。You can, of course, change the namespace names—if you ensure that they match in the proxy assembly and in the ProjectServerServices.xml IntelliSense file.

コード サンプルでは、PSI web サービスの名前空間に別の名前を使用する場合などProjectWebSvcIntelliSense を実行するには、名前空間がプロキシ アセンブリと一致するようにSvcProjectを使用するサンプルを変更しなければなりません。If a code sample uses a different name for a PSI web service namespace, for example ProjectWebSvc, for IntelliSense to work you must change the sample to use SvcProject so that the namespace matches the proxy assembly.

ASMX ベースのプロキシ アセンブリを使用する利点は、すべて PSI web サービス名前空間が含まれています。複数の web 参照を作成する必要はありません。An advantage to using the ASMX-based proxy assembly is that it includes all PSI web service namespaces; you do not have to create multiple web references. 別の利点としては、ProjectServerServices.dll プロキシ アセンブリへの参照を設定するのと同じディレクトリに ProjectServerServices.xml ファイルを追加する場合ことができます IntelliSense の説明、PSI のクラスおよびメンバーの。Another advantage is that, if you add the ProjectServerServices.xml file to the same directory where you set a reference to the ProjectServerServices.dll proxy assembly, you can get IntelliSense descriptions for the PSI classes and members. 図 2 は、 Project.QueueCreateProjectメソッドの IntelliSense のテキストを示します。Figure 2 shows the IntelliSense text for the Project.QueueCreateProject method. 詳細については、Project 2013 SDK ダウンロードの [IntelliSense] フォルダーで [ReadMe_IntelliSense] ファイルを参照してください。For more information, see the [ReadMe_IntelliSense] file in the IntelliSense folder of the Project 2013 SDK download.

図 2 になります。プロジェクトの web サービスのメソッドの IntelliSense を使用します。Figure 2. Using IntelliSense for a method in the Project web service

PSI サービスのメソッドの Intellisense を使用します。Using Intellisense for a method in a PSI service

このプロキシ アセンブリを使用する場合の欠点は、ソリューションが大規模になることと、ソリューションと共にプロキシ アセンブリの配布とインストールが必要になることです。また、プロキシ アセンブリ内と IntelliSense ファイル内で同じ名前空間を使用する必要があります (ただし、スクリプトと ProjectServerServices.xml IntelliSense ファイルを変更して、別々の名前空間を使用するようにした場合は例外です)。Disadvantages to using the proxy assembly are that the solution is larger and you must distribute and install the proxy assembly with the solution. You must also use the same namespaces that are in the proxy assembly and IntelliSense files, unless you change the script and ProjectServerServices.xml IntelliSense file to use different namespaces.

PSI プロキシ ファイルを追加するAdding a PSI proxy file

Project 2013 SDK ダウンロードには、プロキシ アセンブリに対して Wsdl.exe コマンドによって生成されるソース ファイルが含まれています。The Project 2013 SDK download includes the source files generated by the Wsdl.exe command for the proxy assembly. Source.zip 内では、ソース ファイル、Documentation\IntelliSense\ASMXのサブディレクトリです。The source files are in Source.zip in the Documentation\IntelliSense\ASMX subdirectory. プロキシ アセンブリへの参照を設定する代わりに、Visual Studio のソリューションに 1 つまたは複数のソース ファイルを追加できます。Instead of setting a reference to the proxy assembly, you can add one or more of the source files to a Visual Studio solution. たとえば、GenASMXProxyAssembly.cmd スクリプトを実行すると、wsdl を追加します。ソリューションのファイルを Project.cs。For example, after running the GenASMXProxyAssembly.cmd script, add the wsdl.Project.cs file to the solution. スクリプトを実行するには、代わりに、たとえば、単一のソース ファイルを生成する次のコマンドを実行できます。Instead of running the script, you can run the following commands to generate a single source file, for example:

set VDIR=http://ServerName/ProjectServerName/_vti_bin/psi
set WSDL="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\wsdl.exe"
%WSDL% /nologo /l:cs /namespace:SvcProject /out:wsdl.Project.cs %VDIR%/Project.asmx?wsdl

クラス変数名のプロジェクトとして、プロジェクトのオブジェクトを定義するには、次のコードを使用します。To define a Project object as a class variable named project, use the following code. AddContextInfoメソッドでは、Windows 認証とフォーム ベース認証のプロジェクトのオブジェクトにコンテキスト情報を追加します。The AddContextInfo method adds the context information to the project object for Windows authentication and Forms-based authentication.

private static SvcProject.Project project;
private static SvcLoginForms.LoginForms loginForms =
            new SvcLoginForms.LoginForms();
. . .
public void AddContextInfo()
{
    // Add the Url property.
    project.Url = "http://ServerName /ProjectServerName /_vti_bin/psi/project.asmx";
    // Add Windows credentials.
    project.Credentials = CredentialCache.DefaultCredentials;
    // If Forms authentication is used, add the Project Server cookie.
    project.CookieContainer = loginForms.CookieContainer;
}

注意

PSI プロキシ アセンブリを使用した場合、またはSvcProjectという名前のプロジェクトの [サービス参照のプロキシ ファイルを追加するかどうかは、プロジェクトのオブジェクトを作成するのには同じコードを使用します。Whether you use a PSI proxy assembly or add a proxy file for a Project service reference named SvcProject, you would use the same code to create a project object.

Web サービス参照を追加するAdding a web service reference

ASMX ベースのプロキシ アセンブリを使用したり、WSDL 出力ファイルを追加しない、する場合は、1 つまたは複数の個別の web 参照を設定できます。If you do not use the ASMX-based proxy assembly or add a WSDL output file, you can set one or more individual web references. 次の手順では、Visual Studio 2012 を使用して web 参照を設定する方法を示します。The following steps show how to set a web reference by using Visual Studio 2012.

  1. ソリューション エクスプ ローラーで、[参照] フォルダーを右クリックし、し、[サービス参照の追加」を選択します。In Solution Explorer, right-click the References folder, and then choose Add Service Reference.

  2. サービス参照の追加] ダイアログ ボックスで、[詳細設定を選択します。In the Add Service Reference dialog box, choose Advanced.

  3. [サービス参照設定] ダイアログ ボックスで、[ Web 参照の追加を選択します。In the Service Reference Settings dialog box, choose Add Web Reference.

  4. [ URL ] テキスト ボックスに入力http:// _ServerName_/ _ProjectServerName_/_vti_bin/psi/ _ServiceName_.asmx?wsdl、およびEnterキーを押してまたは、[移動] アイコンを選択します。In the URL text box, type http:// _ServerName_/ _ProjectServerName_/_vti_bin/psi/ _ServiceName_.asmx?wsdl, and then press Enter or choose the Go icon. Secure Sockets Layer (SSL) がインストールされている場合は、HTTP プロトコルではなく HTTPS プロトコルを使用する必要があります。If you have Secure Sockets Layer (SSL) installed, you should use the HTTPS protocol instead of the HTTP protocol.

    たとえば、プロジェクト サービスの次の URL を使用して、上のhttp://MyServer/pwaの Project Web App サイト。http://MyServer/pwa/_vti_bin/psi/project.asmx?wsdlFor example, use the following URL for the Project service on the http://MyServer/pwa site for Project Web App: http://MyServer/pwa/_vti_bin/psi/project.asmx?wsdl

    Web ブラウザーを開き、またはに移動http://ServerName/ProjectServerName/_vti_bin/psi/ServiceName.asmx?wsdlOr, open your web browser, and navigate to http://ServerName/ProjectServerName/_vti_bin/psi/ServiceName.asmx?wsdl. ファイルをローカル ディレクトリでは、次のようにC:\Project\WebServices\ServiceName.wsdlSave the file to a local directory, such as C:\Project\WebServices\ServiceName.wsdl. Web 参照の追加] ダイアログ ボックスで、 URLのファイルのプロトコルとファイルへのパスを入力します。In the Add Web Reference dialog box, for URL, type the file protocol and the path to the file. たとえば、 file://C:\Project\WebServices\Project.wsdlFor example, type file://C:\Project\WebServices\Project.wsdl.

  5. 参照が解決した後は、 Web 参照名] テキスト ボックスに参照名を入力します。After the reference resolves, type the reference name in the Web reference name text box. Project 2013 開発者向けドキュメントのコード例では、 Svc ServiceName の任意の標準的な参照名を使用します。Code examples in the Project 2013 developer documentation use the arbitrary standard reference name Svc ServiceName. SvcProjectの名前は、プロジェクトの web サービス (図 3 を参照してください)。For example, the Project web service is named SvcProject (see Figure 3).

    図 3 です。ASMX web サービスの参照を追加します。Figure 3. Adding an ASMX web service reference

    ASMX web サービスの参照を追加します。Adding an ASMX web service reference

Project Server コンピューター上で実行する必要があります、偽装を使用して、またはあるアプリケーション コンポーネントの管理者特権のアクセス許可は、ASMX web 参照の代わりに WCF サービス参照を使用します。For application components that must run on the Project Server computer, use impersonation, or have elevated permissions, use a WCF service reference instead of an ASMX web reference. 詳細については、プロジェクト内の WCF ベースのコード サンプルの前提条件を参照してください。For more information, see Prerequisites for WCF-based code samples in Project.

その他の参照を設定するSetting other references

プロジェクトのサーバー アプリケーションは、多くの場合、SharePoint Server 2013 web サービスなどのサービスを使用します。Project Server applications often use other services, such as SharePoint Server 2013 web services. その他のサービスが必要な場合は、例に記載されています。If other services are required, they are noted in the example.

コード サンプルのローカル参照は、サンプルの上部にあるusingステートメントのとおりです。Local references for the code sample are listed in using statements at the top of the sample:

  1. ソリューション エクスプ ローラーで、[参照] フォルダーを右クリックし、参照の追加を選択し、In Solution Explorer, right-click the References folder, and then choose Add Reference.

  2. [参照] を選択し、以前にコピーしたプロジェクトのサーバー Dll を格納する場所を参照します。Choose Browse, and then browse to the location where you stored the Project Server DLLs that you copied previously. Dll する必要がある、し、[ ok] を選択します。Choose the DLLs you need, and then choose OK.

注意

開発用コンピューター上のアセンブリのバージョンがターゲット Project Server コンピューターのものと厳密に一致していることを確認します。Ensure that the assembly versions on your development computer exactly match those on the target Project Server computer.

複数の認証を使用するUsing multiple authentication

Windows 認証またはフォーム認証では、オンプレミスの Project Server のユーザーの認証はクレーム処理では、SharePoint Server 2013 によって行われます。Authentication of on-premises Project Server users, whether by Windows authentication or Forms authentication, is done through claims processing in SharePoint Server 2013. 複数の認証では、Project Web App が提供されている web アプリケーションが Windows 認証とフォーム ベース認証の両方をサポートしていることを意味します。Multiple authentication means that the web application on which Project Web App is provisioned supports both Windows authentication and Forms-based authentication. 場合は、請求処理は、ユーザーの認証の種類を判断できないために次のエラーでは、Windows 認証を使用する ASMX web サービスへの呼び出しが失敗します。If that is the case, a call to an ASMX web service that uses Windows authentication will fail with the following error, because the claims process cannot determine which type of user to authenticate:

The server was unable to process the request due to an internal error. . . .

ASMX の問題が解決するのには、各 PSI web サービスに対して定義されている派生クラスに PSI メソッドへのすべての呼び出しがあります。To fix the problem for ASMX, all calls to PSI methods should be to a derived class that is defined for each PSI web service. 派生クラスは、派生の PSI サービス クラスの cookie を取得するのにSvcLoginWindows.LoginWindowsクラスを使用する必要がありますもします。The derived class must also use the SvcLoginWindows.LoginWindows class to get a cookie for the derived PSI service class. 次の例では、 ProjectDerivedクラスは、 SvcProject.Projectクラスから派生します。In the following example, the ProjectDerived class derives from the SvcProject.Project class. プロジェクトのクラスのメソッドを呼び出すたびに web 要求ヘッダーをオーバーライドし、派生クラスのEnforceWindowsAuthプロパティを追加します。The derived class adds the EnforceWindowsAuth property and overrides the web request header for every call to a method in the Project class. EnforceWindowsAuthプロパティがtrueの場合は、 GetWebRequestメソッドは、フォーム認証を無効にするヘッダーを追加します。If the EnforceWindowsAuth property is true, the GetWebRequest method adds a header that disables Forms authentication. EnforceWindowsAuthfalseの場合は、フォーム認証を続行できます。If EnforceWindowsAuth is false, Forms authentication can proceed.

次のASMXLogon_MultiAuthサンプルを使用するには、コンソール アプリケーションを作成、手順を実行は、アプリケーションを作成し web サービス参照の追加、および wsdl を追加し。LoginWindows.cs プロキシ ファイルと wsdl です。プロキシ ファイルを Project.cs。To use the following ASMXLogon_MultiAuth sample, create a console application, follow the steps in Creating the application and adding a web service reference, and then add the wsdl.LoginWindows.cs proxy file and the wsdl.Project.cs proxy file. Mainメソッドでは、 ProjectDerivedクラスのプロジェクトのインスタンスを作成します。The Main method creates the project instance of the ProjectDerived class. サンプルでは、プロジェクトのCookieContainerオブジェクトを取得するのにLoginWindowsDerivedクラスを派生を使用する必要があります。CookieContainerプロパティで、Windows 認証とフォーム認証を区別します。The sample must use the derived LoginWindowsDerived class to get a CookieContainer object for the project.CookieContainer property, which distinguishes Forms authentication from Windows authentication. プロジェクトのオブジェクトは、 SvcProject.Projectクラスの任意のメソッドへの呼び出しに使用できます。The project object can then be used to make calls to any method in the SvcProject.Project class.

注意

LoginWindowsサービスは、複数認証環境でのアプリケーションの asmx サービスに対してのみ必要です。The LoginWindows service is required only for ASMX applications in a multiple authentication environment. サンプルでは、 ASMXLogon_MultiAuthGetLogonCookieメソッドは、 loginWindowsオブジェクトの cookie を取得します。In the ASMXLogon_MultiAuth sample, the GetLogonCookie method gets a cookie for the loginWindows object. プロジェクトです。CookieContainer loginWindows.CookieContainerの値にプロパティを設定します。The project.CookieContainer property is set to the loginWindows.CookieContainer value.

using System;
using System.Net;
using PSLibrary = Microsoft.Office.Project.Server.Library;
namespace ASMXLogon_MultiAuth
{
    class Program
    {
        private const string PROJECT_SERVER_URL = 
            "http://ServerName/ProjectServerName/_vti_bin/psi/";
        static void Main(string[] args)
        {
            bool isWindowsUser = true;
            // Create an instance of the project object.
            ProjectDerived project = new ProjectDerived();
            project.Url = PROJECT_SERVER_URL + "Project.asmx";
            project.Credentials = CredentialCache.DefaultCredentials;
            try
            {
                // The program works on a Windows-auth-only computer if you comment-out the
                // following line. The line is required for multiple authentication.
                project.CookieContainer = GetLogonCookie();
                project.EnforceWindowsAuth = isWindowsUser;
                // Get a list of all published projects. 
                // Use ReadProjectStatus instead of ReadProjectList,
                // because the permission requirements are lower.
                SvcProject.ProjectDataSet projectDs =
                    project.ReadProjectStatus(Guid.Empty,
                        SvcProject.DataStoreEnum.PublishedStore,
                        string.Empty,
                        (int)PSLibrary.Project.ProjectType.Project);
                Console.WriteLine(string.Format(
                    "There are {0} published projects.", 
                    projectDs.Project.Rows.Count));
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (WebException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.Write("Press any key to continue...");
                Console.ReadKey(false);
            }
        }
        private static CookieContainer GetLogonCookie()
        {
            // Create an instance of the loginWindows object.
            LoginWindowsDerived loginWindows = new LoginWindowsDerived();
            loginWindows.EnforceWindowsAuth = true;
            loginWindows.Url = PROJECT_SERVER_URL + "LoginWindows.asmx";
            loginWindows.Credentials = CredentialCache.DefaultCredentials;
            loginWindows.CookieContainer = new CookieContainer();
            if (!loginWindows.Login())
            {
                // Login failed; throw an exception.
                throw new UnauthorizedAccessException("Login failed.");
            }
            return loginWindows.CookieContainer;
        }
    }
    // Derive from LoginWindows class; include additional property and 
    // override the web request header.
    class LoginWindowsDerived : SvcLoginWindows.LoginWindows
    {
        public bool EnforceWindowsAuth { get; set; }
        protected override WebRequest GetWebRequest(Uri uri)
        {
            WebRequest request = base.GetWebRequest(uri);
            if (this.EnforceWindowsAuth)
            {
                request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
            }
            return request;
        }
    }
    // Derive from Project class; include additional property and 
    // override the web request header.
    class ProjectDerived : SvcProject.Project
    {
        public bool EnforceWindowsAuth { get; set; }
        protected override WebRequest GetWebRequest(Uri uri)
        {
            WebRequest request = base.GetWebRequest(uri);
            if (this.EnforceWindowsAuth)
            {
                request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
            }
            return request;
        }
    }
}

派生LoginWindowsクラスを使用して、フォーム認証を無効にする web 要求ヘッダーの PSI 呼び出しを行うには、複数認証環境で実行されるアプリケーションに必要です。Using the derived LoginWindows class, and making PSI calls with a web request header that disables Forms authentication, is required for applications that run in a multiple authentication environment. Project Server では、クレーム認証のみを使用する場合は、web 要求のヘッダーを追加するクラスを派生させる必要はありません。If Project Server uses only claims authentication, it is not necessary to derive a class that adds a web request header. 前の例は、両方の環境で実行されます。The previous example runs in both environments.

WCF ベースのアプリケーション用の修正プログラムは、異なります。The fix for a WCF-based application is different. 詳細については、プロジェクト内の WCF ベースのコード サンプルの前提条件複数の認証を使用してセクションを参照してください。For more information, see the Using multiple authentication section in Prerequisites for WCF-based code samples in Project.

一般的な定数の値を変更するChanging the values of generic constants

ほとんどのサンプルでは、更新する必要が、サンプルを動作させるため正しく、環境内の 1 つまたは複数の変数があります。Most samples have one or more variables that you must update for the sample to work properly in your environment. 次の例では、SSL がインストールされている場合は HTTP プロトコルではなく HTTPS プロトコルを使用します。In the following example, if you have SSL installed, use the HTTPS protocol instead of the HTTP protocol. _サーバー名_を使用しているサーバーの名前に置き換えます。Replace ServerName with the name of the server that you are using. _ProjectServerName_を PWA など、Project Server サイトの仮想ディレクトリ名に置き換えます。Replace ProjectServerName with the virtual directory name of your Project Server site, such as PWA.

const string PROJECT_SERVER_URI = "http://ServerName/ProjectServerName/";

変更する必要があるその他の変数または必要条件は、コード サンプルの上部に記載されています。Any other variables that you must change or other prerequisites are noted at the top of the code example.

結果を確認するVerifying the results

取得し、コード サンプルの結果を解釈する常に簡単ではありません。Getting and interpreting results from a code sample is not always straightforward. たとえば、プロジェクトを作成する場合は、Project Web App の [プロジェクト センター] ページに表示するプロジェクトを発行する必要があります。For example, if you create a project, you must publish the project before it can appear on the Project Center page in Project Web App.

コード サンプルの結果は、いくつかの方法で確認できます。たとえば、次のような方法があります。You can verify code sample results in several ways, for example:

  • プロジェクト評価のためのクライアントを使用して、Project Server コンピューターからプロジェクトを開くし、目的のアイテムを表示します。Use the Project Professional 2013 client to open the project from the Project Server computer, and view the items that you want.

  • Project Web App の [プロジェクト センター] ページで発行されたプロジェクトを表示する ( http://ServerName/ProjectServerName/projects.aspx)。View published projects on the Project Center page of Project Web App ( http://ServerName/ProjectServerName/projects.aspx).

  • Project Web App では、キューのログを表示します。View the Queue log in Project Web App. サーバー設定] ページを開く (右上隅で、[設定] アイコンを選択します)、個人用の設定] セクションで [自分のキュー ジョブを選択し、( http://ServerName/ProjectServerName/MyJobs.aspx)。Open the Server Settings page (choose the Settings icon in the top-right corner), and then choose My Queued Jobs under the Personal Settings section ( http://ServerName/ProjectServerName/MyJobs.aspx). ビュー 」ドロップ ダウン リストで、ジョブの状態で並べ替えることができます。In the View drop-down list, you can sort by the job status. 既定の状態が進行中で過去 1 週間のジョブの失敗ですThe default status is In Progress and Failed Jobs in the Past Week.

  • Project Web App の [サーバー設定] ページを使用して ( http://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx) とすべてのキュー ジョブの管理、削除、またはチェックインのエンタープライズ オブジェクトを強制的にします。Use the Server Settings page in Project Web App ( http://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx) to manage all queue jobs and delete or force check-in enterprise objects. [サーバーの設定] ページで、これらのリンクにアクセスする管理者の権限がある必要があります。You must have administrative permissions to access those links on the Server Settings page.

  • Microsoft SQL Server Management Studio のを使用して、プロジェクト データベース内のテーブルに対してクエリを実行します。Use Microsoft SQL Server Management Studio to run a query on a table in the Project database. たとえば、pub の上位 200 行を選択するのには次のクエリを使用します。ワークフロー ステージの詳細ページ (Pdp) のプロジェクトに関する情報を表示するのには MSP_WORKFLOW_STAGE_PDPS テーブルです。For example, use the following query to select the top 200 rows of the pub.MSP_WORKFLOW_STAGE_PDPS table to show information about the project detail pages (PDPs) in workflow stages.

      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]
    

クリーンアップするCleaning up

一部のコード サンプルをテストした後、エンタープライズ オブジェクトと設定を削除またはリセットする必要があります。After you test some code samples, there are enterprise objects and settings that should be deleted or reset. Project Web App の [サーバー設定] ページを使用するにはエンタープライズ ・ データを管理する ( http://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx)。You can use the Server Settings page in Project Web App to manage enterprise data ( http://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx). [サーバー設定] ページのリンクを使用すると、古いアイテムを削除する、強制的にチェックインのプロジェクト、すべてのユーザーのジョブ キューの管理、その他の管理タスクを実行できます。Links on the Server Settings page enable you to delete old items, force check-in projects, manage the job queue for all users, and perform other administrative tasks.

[サーバー設定] ページに表示されるリンクの一部を以下に示します。これらは、コード サンプルを実行した後に一般的なクリーンアップの操作を行うために使用できます。Following are some of the links on the Server Settings page that you can use for typical cleanup activities after running code samples:

  • エンタープライズ ユーザー設定フィールドと参照テーブルEnterprise Custom Fields and Lookup Tables

  • キュー ジョブを管理します。Manage Queue Jobs

  • エンタープライズ オブジェクトを削除します。Delete Enterprise Objects

  • チェックインのエンタープライズ オブジェクトを強制的にForce Check-in Enterprise Objects

  • エンタープライズ プロジェクトの種類Enterprise Project Types

  • ワークフロー フェーズWorkflow Phases

  • ワークフロー ステージWorkflow Stages

  • プロジェクト詳細ページProject Detail Pages

  • タイムシート期間Time Reporting Periods

  • タイムシートの設定と既定の設定Timesheet Settings and Defaults

  • 行の分類Line Classifications

特定の Project Web App サーバーの設定ページではなく、Project Web App インスタンスごとに、SharePoint Server 2013 では、追加の設定が管理されます。Additional settings are managed by SharePoint Server 2013 for each Project Web App instance, rather than by a specific Project Web App Server Settings page. SharePoint サーバーの全体管理アプリケーションで、アプリケーションの全般的な設定を選択し、プロジェクトのサーバーの設定、[管理] を選択を [サーバーの設定] ページで、ドロップダウン ボックスの一覧で、Project Web App インスタンスを選択.In the SharePoint Central Administration application, choose General Application Settings, choose Manage under Project Server Settings, and then choose the Project Web App instance in the drop-down list on the Server Settings page. たとえば、選択した Project Web App インスタンスのイベント ハンドラーを追加、削除するサーバー側のイベント ハンドラーを選択します。For example, choose Server Side Event Handlers to add or delete event handlers for the selected Project Web App instance.

関連項目See also