Partager via


Conditions préalables pour les exemples de code basés sur WCF (traduction automatique)

Dernière modification : jeudi 23 juin 2011

S’applique à : Office 2010 | Project 2010 | Project Server 2010 | SharePoint Server 2010

Dans cet article
Configuration de l'environnement de développement
Création de l'Application et en ajoutant une référence de Service
Autres références de paramètre
Ajout d'un fichier de Configuration de Service
À l'aide de déclarations Multi-Authentication
Modification des valeurs de constantes génériques
Vérification des résultats
Nettoyage des

Important

Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Les exemples de code de la référence des bibliothèques de classes et des services Web développés pour Microsoft Project Server 2010 sont conformes à un format standard qui utilise des services WCF (Windows Communication Foundation). Les exemples sont conçus pour être copiés dans une application de console et s’exécutent en tant qu’unité complète. Les exceptions sont indiquées dans l’exemple.

Exemples de code dans le SDK Project 2010 sont identiques à ceux des échantillons développés pour Office Project Server 2007 utilisent des services Web ASMX. Les exemples de ASMX peuvent également être adaptés pour utiliser les services WCF. Cet article explique comment utiliser les exemples avec les services WCF. Pour plus d'informations sur la façon d'utiliser les exemples avec les services Web ASMX, consultez Conditions préalables pour les exemples de code basés sur ASMX (traduction automatique).

Notes

Nouvelles applications doivent utiliser l'interface WCF, qui est recommandé de technologie pour les communications réseau Microsoft. Les applications existantes qui utilisent l'interface ASMX doivent utiliser l'URL par le biais de Project Web App, qui vérifie les autorisations de Project Server.

L'URL du service WCF via l'application Web de SharePoint Services peut être utilisé pour les composants de middleware qui s'exécutent uniquement sur l'ordinateur de Project Server et les applications qui utilisent l'emprunt d'identité. Pour plus d'informations sur l'interface WCF et l'interface ASMX, consultez Vue d’ensemble de WCF et de l’interface PSI (traduction automatique).

Avant d'exécuter les exemples de code, vous devez configurer l'environnement de développement, configurer l'application, ajoutez un fichier de configuration de service (ou configurer les services WCF par programme), puis modifiez les valeurs de constantes génériques correspondant à votre environnement. Cet article comprend les sections suivantes :

  • Configuration de l'environnement de développement

  • Création de l'Application et en ajoutant une référence de Service

    • À l'aide de l'Assembly de Proxy PSI avec les Descriptions Intellisense

    • Ajout d'un fichier de Proxy PSI

    • Ajout d’une référence de service

  • Autres références de paramètre

  • Ajout d'un fichier de Configuration de Service

  • À l'aide de déclarations Multi-Authentication

  • Modification des valeurs de constantes génériques

  • Vérification des résultats

  • Nettoyage des

Configuration de l'environnement de développement

  1. Configurer un test système de Project Server.

    Utilisez un test système de Project Server chaque fois que vous développez ou test. Même lorsque votre code fonctionne parfaitement, dépendances interprojets, création de rapports ou d'autres facteurs environnementaux peuvent entraîner des conséquences inattendues.

    Notes

    Assurez-vous que vous êtes un utilisateur valide sur le serveur et vérifiez que vous disposez des autorisations suffisantes pour les appels d'Interface de Project Server (PSI) que votre application utilise.

    Dans certains cas, il se pouvez que vous deviez effectuer un débogage distant sur le serveur. Vous devrez également définir un gestionnaire d'événements en installant un assembly du Gestionnaire d'événements sur l'ordinateur de Project Server et ensuite configurer le Gestionnaire d'événements à l'aide de la page Paramètres du serveur dans Project Web App.

  2. Configurer un ordinateur de développement.

    Vous accédez généralement la PSI via un réseau. Les exemples de code sont conçus pour être exécuté sur un autre client à partir du serveur, sauf mention contraire.

    1. Installer la version correcte de Microsoft Visual Studio.   Sauf mention contraire, les exemples de code sont écrits en Microsoft Visual c#. Ils peuvent être utilisés avec Microsoft Visual Studio 2008 SP1 ou Microsoft Visual Studio 2010.

      Notes

      Vous pouvez utiliser Visual Studio 2008 pour la plupart des applications développées pour Project Server 2010. Applications de flux de travail de Project Server nécessitent le développement sur l'ordinateur de Project Server, à l'aide de Visual Studio 2010. Nous vous recommandons de Visual Studio 2010 pour tous les développements de Project Server.

    2. DLL de serveur de projet copie à l'ordinateur de développement.   Pour les applications sans workflow, copiez les assemblys suivants à partir de [Program Files]\Microsoft Office Servers\14.0\Bin sur l'ordinateur de Project Server à l'ordinateur de développement :

      • Microsoft.Office.Project.Server.Events.Receivers.dll

      • Microsoft.Office.Project.Server.Library.dll

      Notes

      Les applications de flux de travail nécessitent le développement sur un ordinateur de Project Server. Pour plus d'informations, consultez Développement de flux de travail Project Server (traduction automatique).

    3. Pour savoir comment compiler et utiliser l'assembly de proxy ProjectServerServices.dll pour les services WCF dans le programme PSI, reportez-vous À l'aide de l'Assembly de Proxy PSI avec les Descriptions Intellisense.

  3. Créer des descriptions d'Intellisense.

    Pour utiliser les descriptions Intellisense pour les classes et les membres dans les assemblages de Project Server, copiez les fichiers de XML Intellisense à partir du téléchargement du Kit de développement Project 2010 dans le même répertoire où se trouvent les assemblys de Project Server. Par exemple, copiez le fichier Microsoft.Office.Project.Server.Library.xml dans le répertoire dans lequel votre application définit une référence à l'assembly Microsoft.Office.Project.Server.Library.dll.

    Les descriptions IntelliSense pour les services PSI nécessitent que vous utilisez le fichier ProjectServerServices.xml avec l'assembly de proxy ProjectServerServices.dll.

Création de l'Application et en ajoutant une référence de Service

  1. Créez une application console.

    Lorsque vous créez une application console, dans la liste déroulante de la boîte de dialogue Nouveau projet , sélectionnez .NET Framework 3.5. Vous pouvez copier l'exemple de code PSI dans la nouvelle application.

  2. Ajouter des références requises pour WCF.

    Sur le .NET onglet de la boîte de dialogue Ajouter une référence , ajoutez une référence à System.ServiceModel. Une application Web utiliserait System.ServiceModel.Web.

    Ajoutez une référence à System.Runtime.Serialization.

  3. Copiez le code.

    Copiez l'exemple de code complet dans le fichier Program.cs de l'application console.

  4. Définir l'espace de noms pour l'exemple d'application.

    Vous pouvez modifier l'espace de noms répertorié dans la partie supérieure de l'échantillon à l'espace de noms application par défaut ou modifier l'espace de noms par défaut application correspondant à l'échantillon. Vous pouvez trouver les noms d'application par défaut dans les propriétés de l'application.

    Par exemple, l'exemple de code pour CreateNewAssignment a Microsoft.SDK.Project.Samples.CreateNewAssignment de l'espace de noms. Copiez l'espace de noms du fichier Program.cs et ouvrez le volet des Propriétés de projet (dans le menu Projet , cliquez sur Propriétés de CreateNewAssignment). Sous l'onglet Application , copiez l'espace de noms dans la zone de texte nom d'espace par défaut .

  5. Définir les références de service.

    De nombreux exemples requièrent une référence à un ou plusieurs des services PSI. Ils sont répertoriés dans l'échantillon lui-même ou dans des commentaires qui précèdent l'échantillon. Pour obtenir de l'espace de noms correct des références de service, assurez-vous que vous définissez tout d'abord les noms d'application par défaut.

    Il existe trois façons d'ajouter une référence de service WCF :

    • Compilez l'assembly de proxy ProjectServerServices.dll PSI et définissez une référence à l'assembly. Reportez-vous À l'aide de l'Assembly de Proxy PSI avec les Descriptions Intellisense.

    • Ajouter un fichier de code source PSI proxy à la solution Visual Studio. Consultez Ajout d'un fichier de Proxy PSI.

    • Ajouter une référence de service à l'aide de Visual Studio. Consultez Ajout d’une référence de service.

      Avertissement

      Ajout d'une référence de service dans Visual Studio requiert que vous modifiez temporairement le fichier web.config dans le répertoire d'application principal Service de Project Server sur l'ordinateur qui exécute Project Server. Nous recommandons d'utiliser une des deux premières méthodes.

À l'aide de l'Assembly de Proxy PSI avec les Descriptions Intellisense

Vous pouvez utiliser un assembly de proxy pour tous les services WCF publics dans la PSI. Compilez l'assembly de proxy ProjectServerServices.dll en utilisant le script Documentation\Intellisense\WCF\CompileWCFProxyAssembly.cmd dans le téléchargement du Kit de développement logiciel Project 2010 et puis copiez l'assembly de proxy pour votre ordinateur de développement. Copiez le fichier ProjectServerServices.xml pour Intellisense au même emplacement. Dans Visual Studio, définir une référence à l'assembly de proxy ProjectServerServices.dll.

Pour Project Server service packs et les mises à jour, vous pouvez mettre à jour les fichiers de source de proxy et créer un nouvel assembly de proxy en utilisant le script GenWCFProxyAssembly.cmd dans le même dossier de téléchargement SDK. Pour plus d'informations, consultez Procédure : Créer un assembly de proxy pour des services WCF (traduction automatique). Pour un lien vers le téléchargement, consultez Documentation du SDK Project 2010 (traduction automatique).

Notes

Pour Project Server service packs et les mises à jour, vous pouvez créer des fichiers de source de proxy mis à jour et un nouvel assembly de proxy PSI pour WCF. Pour plus d'informations, consultez Procédure : Créer un assembly de proxy pour des services WCF (traduction automatique).

Les espaces de noms arbitraires créées pour les services Web ASMX et les services WCF sont les mêmes, afin que le fichier ProjectServerServices.xml pour Intellisense fonctionne avec les deux versions. Par exemple, l'espace de noms du service des ressources dans l'assembly de proxy basée sur WCF et dans l'assembly de proxy basés sur ASMX est SvcResource. Vous pouvez, bien sûr, modifier les espaces de noms — si vous générez votre propre assembly de proxy et s'assurer que les espaces de noms correspondent dans l'assembly de proxy et dans le fichier ProjectServerServices.xml. Si un échantillon de code dans le Kit de développement utilise un nom différent pour un namespace de service Web de la PSI, par exemple ProjectSvc, vous devez modifier l'échantillon à utiliser SvcProject pour faire correspondre les noms dans l'assembly de proxy.

Avantages de l'utilisation de l'assembly de proxy basée sur WCF sont les suivants :

  • Vous pouvez développer la plupart des solutions (à l'exception des solutions de workflow) avec l'assembly de proxy sur un ordinateur autre que l'ordinateur Project Server. Définissant une référence de service individuel requiert l'accès à l'application Services du projet locale sur l'ordinateur de Project Server.

  • L'assembly de proxy inclut tous les espaces de noms PSI service, vous n'avez pas besoin d'utiliser plusieurs références de service.

  • Si vous ajoutez le fichier ProjectServerServices.xml dans le même répertoire que celui dans lequel vous définissez une référence à l'assembly de proxy ProjectServerServices.dll, vous pouvez obtenir les descriptions Intellisense pour les classes PSI et membres. Pour plus d'informations, consultez le fichier Lisezmoi dans le dossier Documentation\Intellisense du téléchargement du Kit de développement.

Inconvénients liés à l'aide de l'assembly de proxy sont la solution est plus grande et vous devez distribuer et installer l'assembly de proxy avec la solution. Vous devez également utiliser les mêmes espaces de noms qui sont dans l'assembly de proxy et les fichiers Intellisense, sauf si vous modifiez le script pour générer un assembly de proxy et de modifier le fichier ProjectServerServices.xml Intellisense à utiliser des espaces de noms différents.

Ajout d'un fichier de Proxy PSI

Le téléchargement du Kit de développement logiciel de Project 2010 inclut également les fichiers sources générés par la commande SvcUtil.exe pour l'assembly de proxy. Les fichiers source sont dans Source.zip dans le sous-répertoire Documentation\Intellisense\WCF. Au lieu de définir une référence à l'assembly de proxy, vous pouvez ajouter un ou plusieurs des fichiers source à une solution Visual Studio. Par exemple, pour utiliser le service de projet et le service de ressources, ajoutez la wcf.Project.cs et wcf.Fichiers Resource.cs à la solution.

Dans WCF, la classe principale dans chaque service PSI est définie par une interface et implémentée dans une classe de client pour accéder aux membres. Par exemple, le principal SvcProject.Project d'interface PSI est implémenté dans la classe SvcProject.ProjectClient. Pour définir un objet ProjectClient comme une variable de classe nommée projectClient, par exemple, utilisez le code suivant. Dans l'exemple, la méthode SetClientEndpoints crée un objet projectClient qui utilise le point de terminaison basicHttp_Project, qui est définie dans le fichier app.config. Pour plus d'informations sur un fichier app.config, reportez-vous à la section Ajout d'un fichier de Configuration de Service .

private static SvcProject.ProjectClient projectClient;
. . .
private static void SetClientEndpoints()
{
  projectClient = new SvcProject.ProjectClient("basicHttp_Project");
  . . .
}

public void DisposeClients()
{
  projectClient.Close();
  . . .
}

Notes

Si vous utilisez un assembly de proxy PSI ou ajoutez un fichier de proxy pour ajouter une référence de service de projet nommée SvcProject, le même code aurait utilisé pour créer et de supprimer un objet projectClient.

Ajout d’une référence de service

Si vous ne pas utiliser l'assembly de proxy basée sur WCF ou ajouter un fichier de proxy pour un service PSI, vous pouvez définir une ou plusieurs références de service individuels directement dans Visual Studio.

Avertissement

Pour définir une référence de service, vous devez temporairement échanger le fichier web.config dans le répertoire d'application de Service du projet. Nous vous recommandons d'utiliser l'assembly de proxy ProjectServerServices.dll ou de l'ajout de fichiers de source de proxy, au lieu d'ajouter directement des références de service dans Visual Studio.

Les étapes suivantes montrent comment définir une référence de service sur un ordinateur exécutant un test d'installation de Project Server à l'aide de Visual Studio 2010 :

  1. Échanger le fichier web.config, comme décrit dans Procédure : Créer un assembly de proxy pour des services WCF (traduction automatique) et exécutez iisreset.

  2. Dans l' Explorateur de solutions, cliquez droit sur le dossier Références et puis cliquez sur Ajouter une référence de Service.

  3. Dans la boîte de dialogue Ajouter une référence de Service dans la zone de texte Adresse , tapez https://localhost:32843 /[GUID]/psi/ServiceName.svcet appuyez sur Entrée. Remplacez [GUID] par le nom du répertoire virtuel de l'application de service de Project Server, tels que c476f85e5c614de991e345e5127e20dc. Remplacez ServiceName portant le nom du service, telles que le projet.

    Vous pouvez obtenir le nom du répertoire virtuel de Service de Project Server dans une des manières suivantes :

    • Ouvrez l'application Administration centrale de 2010 SharePoint dans Internet Explorer. Cliquez sur Gérer les applications de serviceet puis cliquez sur l'application de Service de Project Server que vous souhaitez. Par exemple, cliquez sur ProjectServerService. L'URL de la page Gérer les Sites Project Web App contient le nom du répertoire virtuel. Par exemple, dans https://localhost:36701/_admin/managepwa.aspx?appid=c476f85e-5c61-4de9-91e3-45e5127e20dc , le nom de répertoire virtuel est c476f85e5c614de991e345e5127e20dc (le nom du répertoire ne contient aucun tiret).

    • Ouvrez la boîte de dialogue Gestionnaire des services Internet (IIS) sur l'ordinateur de Project Server. Développez le nœud Services Web SharePoint dans le volet Connexions , puis les répertoires virtuels de service au-dessous, jusqu'à ce que vous trouvez le répertoire qui contient un dossier PSI. Sélectionnez le répertoire et cliquez sur Paramètres avancés dans le volet Actions , puis copiez le nom du répertoire dans le champ Chemin d'accès virtuel .

      Notes

      Il peut y avoir plusieurs répertoires virtuels de Service de Project Server. Assurez-vous de sélectionner le répertoire virtuel qui contient l'instance de Project Web App que vous souhaitez.

    • Utilisez l'applet de commande get-SPServiceApplication dans Windows PowerShell qui est installé avec SharePoint Server 2010. Dans la barre des tâches, cliquez sur Démarrer, sur Tous les programmes, cliquez sur Produits Microsoft SharePoint 2010et puis cliquez sur Environnement de gestion SharePoint 2010. Voici la commande et les résultats dans la fenêtre de Environnement de gestion SharePoint 2010 pour les applications de service définis (vos GUID seront différents). Copiez le GUID pour l'application de service de Project Server.

      PS > get-SPServiceApplication 
      DisplayName          TypeName             Id
      -----------          --------             --
      Secure Store Service Secure Store Serv... e23c707b-f94d-4079-86a3-4ee99ed88c60
      State Service        State Service        9f15ce66-95a5-4a13-86c5-9df7fd1fb3de
      Project Server Se... Project Server PS... c476f85e-5c61-4de9-91e3-45e5127e20dc
      PerformancePoint ... PerformancePoint ... b85e01e9-d414-4126-92d5-ee36dfc69668
      Excel Services Ap... Excel Services Ap... 8c40adc1-36bf-45e5-984b-39d547256c74
      Security Token Se... Security Token Se... 3b19014f-1f5d-4e46-8c6f-2ddb42e89544
      Application Disco... Application Disco... a585e505-e56e-4e2f-be70-37859c83ff3e
      WSS_UsageApplication Usage and Health ... 0d938d1c-6761-4848-afe4-b5567d4d4f7e
      Search Administra... Search Administra... 999b518e-69f8-429a-9766-985aa7d75d1b
      SharePoint Server... SharePoint Server... f268bbc9-4afd-43f2-ad27-082ef52e9955
      Search Service Ap... Search Service Ap... 9d4ef748-90a1-4207-add6-5b232fcaf7b4
      

      Si vous connaissez le nom complet de l'application de Service de Project Server, vous pouvez l'utiliser pour obtenir la valeur GUID, par exemple :

      PS > $projectService = "Project Server Service Application"
      PS > (Get-SPServiceApplication | where { $_.Name -eq $projectService }).Id
      
      Guid
      ----
      c476f85e-5c61-4de9-91e3-45e5127e20dc
      

      Notes

      Supprimer les tirets dans le GUID pour obtenir le nom de répertoire virtuel.

    URL telle que https://localhost:32843/c476f85e5c614de991e345e5127e20dc/PSI/Project.svc sont standard pour les services de Project Server.

  4. Une fois que la référence de service est résolu, tapez le nom de référence dans la zone de texte Espace de noms . Exemples de code dans le SDK Project 2010 utilisent le nom de l'espace de noms arbitraires SvcServiceName. Par exemple, le service de projet dans les exemples de code est nommé SvcProject.

  5. Remplacez le fichier web.config d'origine dans le répertoire de projet Service et réexécutez iisreset.

Autres références de paramètre

Les applications de serveur de projet utilisent souvent des autres services, tels que les Services Web Microsoft SharePoint Foundation 2010. Si d'autres services ou les références sont nécessaires, elles sont indiquées dans l'exemple de code.

Les références locales pour l'exemple de code sont répertoriés dans les instructions de using en haut de l'échantillon.

  1. Dans l' Explorateur de solutions, cliquez droit sur le dossier Références et puis cliquez sur Ajouter une référence.

  2. Cliquez sur Parcouriret accédez à l'emplacement où vous avez stocké les DLL de serveur de projet que vous avez copié précédemment. Les DLL que vous voulez et cliquez sur OK.

Notes

Vérifiez que les versions d'assembly sur votre ordinateur de développement correspondent exactement à celles sur l'ordinateur de Project Server cible.

Ajout d'un fichier de Configuration de Service

Si une application configure par programmation les services WCF, il n'utilise pas un fichier de configuration de service. Sinon, une application Windows ou une application console utilise l'élément system.serviceModel dans un fichier app.config ; une application Web inclut system.serviceModel dans le fichier web.config. Pour plus d'informations sur l'utilisation d'un fichier app.config ou de configuration par programmation les services WCF, consultez Procédure pas à pas : Développement d’applications PSI à l’aide de WCF (traduction automatique).

Lorsqu'il génère un fichier de source de proxy de service, la commande SvcUtil.exe crée également un fichier output.config qui constitue la base de l'élément de system.serviceModel par défaut dans un fichier app.config ou web.config. Le téléchargement du Kit de développement logiciel de Project 2010 inclut un exemple de fichier output.config dans Documentation\Intellisense\WCF\Source.zip. Par exemple, le fichier output.config par défaut qui crée de SvcUtil.exe pour le service WssInterop comprend deux liaisons personnalisées, nommées CustomBinding_WssInterop et CustomBinding_WssInterop1. L'élément de client inclut deux points de terminaison par défaut : un point de terminaison est l'adresse HTTPS sur le port 32844 et l'autre pour l'adresse TCP sur le port 32845, comme suit :

<client>
    <endpoint address="https://ServerName.domain:32844/[GUID]/PSI/WssInterop.svc"
        binding="customBinding" bindingConfiguration="CustomBinding_WssInterop"
        contract="SvcWssInterop.WssInterop" name="CustomBinding_WssInterop" />
    <endpoint address="net.tcp://ServerName.domain:32845/[GUID]/PSI/WssInterop.svc"
        binding="customBinding" bindingConfiguration="CustomBinding_WssInterop1"
        contract="SvcWssInterop.WssInterop" name="CustomBinding_WssInterop1">
        <identity>
            <dns value="ServerName" />
        </identity>
    </endpoint>
</client>

Configuration du service PSI n'utilise pas les liaisons par défaut et les points de terminaison. Project Server requiert qu'applications accéder aux services de la PSI par le biais de la ProjectServer.svc frontal, qui agit comme un routeur pour les appels aux services back-end. Pour créer le fichier app.config, procédez comme suit :

  1. Si vous définissez une référence à l'assembly de proxy ProjectServerServices.dll ou que vous ajoutez le fichier de source de proxy pour un service, l'application ne contient pas un fichier app.config. Ajouter un nouvel élément au projet Visual Studio. Dans la boîte de dialogue Ajouter un nouvel élément , sélectionnez le modèle de Fichier de Configuration d'Application , le nom app.configet puis cliquez sur Ajouter.

  2. Supprimez tout le texte dans le fichier app.config et puis copiez le code suivant dans le fichier. Vous pouvez utiliser la même liaison, par exemple, basicHttpConf, pour chaque point de terminaison de service. Si vous voulez utiliser plus d'une liaison, par exemple, pour lier les protocoles HTTP et HTTPS, vous devez créer une liaison pour chaque protocole.

    <?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="http://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>
    
  3. Remplacez ServerName/ProjectServerName dans l'adresse du point de terminaison client avec le nom de votre serveur et une instance de Project Web App.

  4. Remplacez ServiceName portant le nom du service PSI, tel que WssInterop. Veillez à remplacer tous les trois instances du nom du service, par exemple :

    <endpoint address="http://myserver/pwa/_vti_bin/PSI/ProjectServer.svc"
        behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding"
        bindingConfiguration="basicHttpConf" 
        contract="SvcWssInterop.WssInterop"
        name="basicHttp_WssInterop" />
    
  5. Pour utiliser plus de service d'un seul PSI, créez un élément endpoint pour chaque service et pour chaque élément de binding service utilise. Par exemple, les points de terminaison suivants configurer le client pour utiliser la liaison HTTP de base pour les services de WssInterop et QueueSystem :

    <client>
    <endpoint address="https://ServerName/pwa/_vti_bin/PSI/ProjectServer.svc"
        behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding"
        bindingConfiguration="basicHttpConf" 
        contract="SvcWssInterop.WssInterop"
        name="basicHttp_WssInterop" />
    <endpoint address="https://ServerName/pwa/_vti_bin/PSI/ProjectServer.svc"
        behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding"
        bindingConfiguration="basicHttpConf" 
        contract="SvcQueueSystem.QueueSystem"
        name="basicHttp_QueueSystem" />
    </client>
    

Conseil

Vous pouvez modifier un fichier app.config à l'aide de l'éditeur de Configuration du Service WCF dans Visual Studio (dans le menu Outils ). Lorsque vous définissez l'élément contract dans la boîte de dialogue Éditeur de Configuration du Service Microsoft , si la solution à l'aide de l'assembly de proxy PSI, ouvrez ProjectServerServices.dll dans le répertoire bin\debug. La boîte de dialogue Contrat de Type navigateur affiche tous les contrats de service WCF (Figure 1).

Si la solution utilise un fichier de proxy de service, tel que wcfWssInterop.cs, compiler l'application, puis ouvrez le fichier exécutable dans le répertoire bin\debug. Pour plus d'informations sur la modification du fichier app.config, consultez Procédure pas à pas : Développement d’applications PSI à l’aide de WCF (traduction automatique).

La figure 1. À l'aide de l'Explorateur de types de contrat dans l'éditeur de Configuration de Microsoft Service

Utilisation de l’explorateur de types de contrat

À l'aide de déclarations Multi-Authentication

L'authentification des utilisateurs de Project Server, par l'authentification Windows ou l'authentification par formulaires, est effectuée par le biais de demandes de remboursement dans SharePoint. Multi-Authentication signifie que l'application Web sur lequel est approvisionné Project Web App prend en charge l'authentification Windows et authentification par formulaires. Si tel est le cas, tout appel à un service WCF ou ASMX qui utilise l'authentification Windows échoue avec l'erreur suivante, car le processus de réclamation ne peut pas déterminer quel type d'authentification utilisateur :

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.

Pour corriger le problème pour WCF, tous les appels aux méthodes PSI doivent être au sein d'un OperationContextScope est défini pour chaque service PSI. N'imbriquez pas étendues pour plusieurs services ; par exemple, lorsque vous utilisez des appels au service des ressources et des projets, chaque ensemble d'appels doit être dans sa propre portée.

Dans l'exemple suivant, la méthode DisableFormsAuth peut être appelée à partir de chaque section de OperationContextScope dans une application. La méthode supprime toute valeur d'en-tête précédemment désactivé l'authentification par formulaires, afin que l'authentification par formulaires peut se poursuivre si le paramètre isWindowsAuth est false. Si isWindowsAuth est true, la méthode DisableFormsAuth désactive l'authentification par formulaires.

Dans la méthode WcfSample, l'objet projectClient est une instance de la classe de SvcProject.ProjectClient PSI.

// 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 
        // multi-authentication installations.
        DisableFormsAuth(isWindowsUser);

        // Add calls to the projectClient methods here:
        // . . .
    }
}

Notes

Effectuer des appels PSI au sein d'un OperationContextScope est requis uniquement pour les applications qui s'exécutent dans un environnement multi-authentication. Si Project Server utilise uniquement l'authentification Windows, il n'est pas nécessaire de définir une étendue et ajouter un en-tête de demande Web qui désactive l'authentification par formulaires.

Le correctif pour une application basée sur ASMX est différent. Pour plus d'informations, reportez-vous à la section à l'aide de la Multi-Authentication de revendications dans Conditions préalables pour les exemples de code basés sur ASMX (traduction automatique).

Pour obtenir un exemple de code complet qui utilise multi-authentication, reportez-vous au sous-répertoire de Samples\MultiAuthentication\WCFLogon_MultiAuth dans le téléchargement du Kit de développement logiciel de Project 2010.

Modification des valeurs de constantes génériques

La plupart des exemples ont une ou plusieurs variables que vous devez mettre à jour pour l'exemple fonctionne correctement dans votre environnement. Dans l'exemple suivant, si vous avez installé SSL, utilisez le protocole HTTPS au lieu du protocole HTTP. Remplacez nom_serveur par le nom du serveur que vous utilisez. Remplacez ProjectServerName par le nom du répertoire virtuel de votre site project server, tels que PWA.

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

Toutes les autres variables que vous devez modifier sont indiquées en haut de l'exemple de code.

Vérification des résultats

L'obtention et l'interprétation des résultats à partir d'un exemple de code ne sont pas toujours simple. Par exemple, si vous créez un projet, vous devez publier le projet avant d'apparaître sur la page Centre de projets dans Project Web App.

Vous pouvez vérifier les résultats des exemples de code de plusieurs façons, par exemple :

  • Utilisez le client Microsoft Project Professionnel 2010 pour ouvrir le projet à partir de l'ordinateur Project Server et afficher les éléments que vous souhaitez.

  • Affichez le journal de file d'attente dans Project Web App. Cliquez sur Paramètres personnels dans la barre de lancement rapide et puis cliquez sur Mes travaux en file d'attente (/MyJobs.aspxProjectServerName/http://NomServeur). Vous pouvez trier par l'état de travail dans la liste déroulante Affichage . Le statut par défaut est en cours et travaux d'échec de la semaine dernière.

  • Afficher les projets publiés sur la page Centre de projets de Project Web App (/projects.aspxProjectServerName/http://NomServeur).

  • Utilisez la page Paramètres du serveur dans Project Web App pour afficher toutes les files d'attente et les objets d'entreprise (/_layouts/pwa/admin/admin.aspxProjectServerName/http://NomServeur). Vous devez disposer des autorisations administratives pour accéder à la page Paramètres du serveur.

  • Utilisez Microsoft sql Server Management Studio pour exécuter une requête sur une table d'une base de données Project Server. Par exemple, utilisez la requête suivante pour sélectionner les 200 premières lignes de la table MSP_WORKFLOW_STAGE_PDPS pour afficher des informations sur les pages de détails du projet (PDP) lors des étapes du workflow.

    SELECT TOP 200 [STAGE_UID]
          ,[PDP_UID]
          ,[PDP_NAME]
          ,[PDP_POSITION]
          ,[PDP_ID]
          ,[PDP_STAGE_DESCRIPTION]
          ,[PDP_REQUIRES_ATTENTION]
      FROM [ProjectServer_Published].[dbo].[MSP_WORKFLOW_STAGE_PDPS]
    

Nettoyage des

Après avoir testé des exemples de code, les objets d'entreprise et sont les paramètres qui doivent être supprimés ou réinitialiser. Vous pouvez utiliser la page Paramètres du serveur dans Project Web App pour gérer les données d'entreprise (/_layouts/pwa/admin/admin.aspxProjectServerName/http://NomServeur). Liens sur la page Paramètres du serveur permettent de supprimer les anciens éléments, forcer l'archivage de projets, gérer la file d'attente de travail pour tous les utilisateurs et effectuer d'autres tâches administratives.

Voici quelques-uns des liens sur la page Paramètres du serveur à utiliser pour les activités de nettoyage par défaut après l'exécution des exemples de code :

  • Forcer l'archiver les objets d'entreprise

  • Gestionnaires d'événements de côté serveur

  • Gérer les travaux de la file d'attente

  • Champs personnalisés d'entreprise et des Tables de choix

  • Supprimer les objets d'entreprise

  • Types de projets d’entreprise

  • Phases du flux de travail

  • Étapes du flux de travail

  • Pages de détails de projet

Notes

Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Voir aussi

Tâches

Procédure pas à pas : Développement d’applications PSI à l’aide de WCF (traduction automatique)

Procédure : Utiliser l’emprunt d’identité avec WCF (traduction automatique)

Procédure : Créer un assembly de proxy pour des services WCF (traduction automatique)

Concepts

Vue d’ensemble de WCF et de l’interface PSI (traduction automatique)

Conditions préalables pour les exemples de code basés sur ASMX (traduction automatique)

Vue d’ensemble de la référence de l’interface PSI (traduction automatique)

Autres ressources

Centre de développement SharePoint