Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Découvrez des informations pour vous aider à créer des projets dans Visual Studio à l’aide des exemples de code wcf inclus dans les rubriques de référence psi (Project Server Interface).
La plupart des exemples de code WCF inclus dans la bibliothèque de classes Project Server 2013 et les références de service web ont été créés à l’origine pour la documentation du développeur Project 2010 et utilisent un format standard pour les services web WCF. Les exemples fonctionnent toujours dans Project Server 2013 et sont conçus pour être copiés dans une application console et exécutés en tant qu’unité complète. Des exceptions sont notées dans l’exemple.
Les exemples de code de la documentation pour les développeurs project 2013 qui sont inchangés par rapport aux exemples développés pour Office Project Server 2007 utilisent les services Web ASMX. Les exemples basés sur 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 l’utilisation des exemples avec les services web ASMX, consultez Prérequis pour les exemples de code basés sur ASMX dans Project.
Remarque
Si le modèle objet côté client (CSOM) inclut les méthodes requises par votre application, de nouvelles applications doivent être développées avec le modèle CSOM. Le modèle CSOM permet aux applications de fonctionner avec Project Online ou une installation locale de Project Server 2013. Sinon, si votre application utilise l’interface PSI, elle doit utiliser l’interface WCF, qui est la technologie que nous recommandons pour les communications réseau. Les applications qui utilisent l’interface ASMX ou l’interface WCF peuvent fonctionner uniquement pour les installations locales de Project Server 2013.
Pour plus d’informations sur le modèle CSOM, consultez Architecture Project Server 2013 et Modèle objet côté client (CSOM) pour Project 2013.
Avant d’exécuter les exemples de code, vous devez configurer l’environnement de développement, configurer l’application, ajouter un fichier de configuration de service (ou configurer les services WCF par programme) et modifier les valeurs constantes génériques pour qu’elles correspondent à votre environnement.
Configuration de l'environnement de développement
Configurez un système Project Server de test.
Utilisez un système Project Server de test chaque fois que vous développez ou testez. Même lorsque votre code fonctionne parfaitement, les dépendances interprojet, la création de rapports ou d’autres facteurs environnementaux peuvent entraîner des conséquences inattendues.
Remarque
Vérifiez que vous êtes un utilisateur valide sur le serveur et case activée que vous disposez des autorisations suffisantes pour les appels PSI que votre application utilise. La rubrique de documentation pour les développeurs pour chaque méthode PSI inclut une table Autorisations Project Server. Par exemple, la méthode Project.QueueCreateProject nécessite l’autorisation globale NewProject et l’autorisation SaveProjectTemplate .
Dans certains cas, vous devrez peut-être effectuer un débogage à distance sur le serveur. Vous devrez peut-être également configurer un gestionnaire d’événements en installant un assembly de gestionnaire d’événements sur chaque ordinateur Project Server de la batterie de serveurs SharePoint, puis en configurant le gestionnaire d’événements pour le Project Web App instance à l’aide de la page Paramètres de Project Server dans les paramètres d’application généraux de l’Administration centrale de SharePoint.
Configurer un ordinateur de développement.
Vous accédez généralement à l’interface PSI par le biais d’un réseau. Les exemples de code sont conçus pour être exécutés sur un client distinct du serveur, sauf indication contraire.
Installez la version correcte de Visual Studio. Sauf indication contraire, les exemples de code sont écrits en Visual C#. Ils peuvent être utilisés avec Visual Studio 2010 ou Visual Studio 2012. Vérifiez que le Service Pack le plus récent est installé.
Copiez les DLL Project Server sur l’ordinateur de développement. Copiez les assemblys suivants de
[Program Files]\Microsoft Office Servers\15.0\Binsur l’ordinateur Project Server sur l’ordinateur de développement :Microsoft.Office.Project.Server.Events.Receivers.dll
Microsoft.Office.Project.Server.Library.dll
Pour plus d’informations sur la compilation et l’utilisation de l’assembly proxy ProjectServerServices.dll pour les services WCF dans psi, consultez Utilisation d’un assembly proxy PSI et descriptions IntelliSense.
Installez les fichiers IntelliSense.
Pour utiliser les descriptions IntelliSense pour les classes et les membres dans les assemblys Project Server, copiez les fichiers XML IntelliSense mis à jour à partir du téléchargement du Kit de développement logiciel (SDK) Project 2013 dans le répertoire où se trouvent les assemblys Project Server. Par exemple, copiez le fichier Microsoft.Office.Project.Server.Library.xml dans le répertoire où votre application définit une référence à l’assembly Microsoft.Office.Project.Server.Library.dll.
Les descriptions IntelliSense des services PSI nécessitent la création d’un assembly proxy PSI à l’aide du script CompileWCFProxyAssembly.cmd dans le
Documentation\IntelliSense\WCFsous-répertoire du téléchargement du KIT de développement logiciel (SDK) Project 2013. Le script crée l’assembly proxy ProjectServerServices.dll basé sur WCF. Pour plus d’informations, consultez le fichier [ReadMe_IntelliSense].mht dans le téléchargement du SDK.
Création de l’application et ajout d’une référence de service
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 4. Vous pouvez copier l’exemple de code PSI dans la nouvelle application.
Ajoutez les références requises pour WCF.
Dans Explorateur de solutions, ajoutez une référence à System.ServiceModel (voir figure 1). Une application web utilise System.ServiceModel.Web.
Ajoutez également une référence à System.Runtime.Serialization.
Figure 1. Ajout des références dans Visual Studio pour une application basée sur WCF
Copiez le code.
Copiez l’exemple de code complet dans le fichier Program.cs de l’application console.
Définissez l’espace de noms de l’exemple d’application.
Vous pouvez remplacer l’espace de noms répertorié en haut de l’exemple par l’espace de noms par défaut de l’application, ou modifier l’espace de noms d’application par défaut pour qu’il corresponde à l’exemple. Vous pouvez modifier l’espace de noms d’application par défaut en modifiant les propriétés de l’application.
Par exemple, l’exemple de code pour ReadResource a l’espace de noms Microsoft.SDK.Project.Samples.CreateResourceTest. Si le nom du projet Visual Studio est ResourceTest, copiez l’espace de noms à partir du fichier Program.cs, puis ouvrez le volet Propriétés du projet (dans le menu Projet , choisissez ResourceTest Properties). Sous l’onglet Application , copiez l’espace de noms dans la zone de texte Espace de noms par défaut .
Définissez les références de service.
De nombreux exemples nécessitent une référence à un ou plusieurs services PSI. Ceux-ci sont répertoriés dans l’exemple lui-même ou dans les commentaires qui précèdent l’exemple. Pour obtenir l’espace de noms correct des références de service, veillez à définir d’abord l’espace de noms d’application par défaut.
Il existe trois façons d’ajouter une référence de service WCF :
Générez un assembly proxy PSI nommé ProjectServerServices.dll, puis définissez une référence à l’assembly. Consultez Utilisation d’un assembly proxy PSI et descriptions IntelliSense.
Ajoutez un fichier proxy à partir de la sortie svcutil.exe à la solution Visual Studio. Consultez Ajout d’un fichier proxy PSI.
Ajoutez une référence de service à l’aide de Visual Studio. Consultez Ajout d’une référence de service.
Utilisation d’un assembly proxy PSI et de descriptions IntelliSense
Vous pouvez utiliser un assembly proxy pour tous les services WCF publics dans l’interface PSI. Compilez l’assembly proxy ProjectServerServices.dll à l’aide du Documentation\IntelliSense\WCF\CompileWCFProxyAssembly.cmd script dans le téléchargement du Kit de développement logiciel (SDK) Project 2013, puis copiez l’assembly proxy sur votre ordinateur de développement. Copiez le fichier ProjectServerServices.xml pour IntelliSense au même emplacement. Dans Visual Studio, définissez une référence à l’assembly proxy ProjectServerServices.dll.
Pour les Service Packs et mises à jour Project Server, vous pouvez mettre à jour les fichiers sources du proxy et créer un assembly proxy à l’aide du script GenWCFProxyAssembly.cmd dans le même dossier de téléchargement du SDK. Pour obtenir un lien vers le téléchargement du Kit de développement logiciel (SDK), consultez la documentation du développeur Project 2013. Pour plus d’informations, consultez la section Ajout d’une référence de service .
Remarque
Lorsque vous extrayez les fichiers sources du proxy à partir du fichier Source.zip, les fichiers du Documentation\IntelliSense\WCF\Source dossier sont à jour à la date de publication du téléchargement du Kit de développement logiciel (SDK) Project 2013. Pour générer des fichiers sources de proxy PSI mis à jour, exécutez le script GenASMXProxyAssembly.cmd sur l’ordinateur Project Server. Pour plus d’informations, consultez Ajout d’une référence de service.
Les scripts du Documentation\IntelliSense\ASMX dossier ne fonctionnent pas pour les applications WCF. Le script GenASMXProxyAssembly.cmd appelle Wsdl.exe, qui génère des fichiers de code source pour les services ASMX. Les fichiers proxy ASMX incluent différentes classes et propriétés. Par exemple, le service web Resource asMX inclut la classe Resource , tandis que le service Resource basé sur WCF inclut l’interface Resource , l’interface ResourceChannel et la classe ResourceClient .
Les espaces de noms arbitraires créés pour les services web ASMX et les services WCF sont identiques, de sorte que le fichier ProjectServerServices.xml pour IntelliSense fonctionne avec l’un ou l’autre assembly. Par exemple, l’espace de noms du service de ressources dans l’assembly proxy wcf et dans l’assembly proxy ASMX est SvcResource. Vous pouvez bien sûr modifier les noms d’espace de noms si vous vérifiez qu’ils correspondent à l’assembly proxy et au fichier IntelliSense ProjectServerServices.xml.
Si un exemple de code utilise un nom différent pour un espace de noms de service PSI, par exemple ProjectWebSvc, pour qu’IntelliSense fonctionne, vous devez modifier l’exemple pour utiliser SvcProject afin que l’espace de noms corresponde à l’assembly proxy.
L’utilisation de l’assembly proxy basé sur WCF présente les avantages suivants :
Vous pouvez développer la plupart des solutions avec l’assembly proxy sur un autre ordinateur que l’ordinateur Project Server. La définition d’une référence de service individuelle nécessite un développement sur l’ordinateur Project Server.
L’assembly proxy inclut tous les espaces de noms de service PSI. Vous n’avez donc pas à ajouter plusieurs fichiers proxy.
Si vous ajoutez le fichier ProjectServerServices.xml au même répertoire que celui où vous définissez une référence à l’assembly proxy ProjectServerServices.dll, vous pouvez obtenir des descriptions IntelliSense pour les classes et les membres PSI. Pour plus d’informations, consultez le fichier [ReadMe_IntelliSense] dans le
Documentation\IntelliSensedossier du téléchargement du Kit de développement logiciel (SDK) Project 2013.
Figure 2. Utilisation d’IntelliSense pour une méthode dans le service Resource
Les inconvénients de l’utilisation de l’assembly proxy sont que la solution est plus grande et que vous devez distribuer et installer l’assembly proxy avec la solution. Vous devez également utiliser les mêmes espaces de noms que dans l’assembly proxy et les fichiers IntelliSense, sauf si vous modifiez le script pour générer un assembly proxy et que vous modifiez le ProjectServerServices.xml fichier IntelliSense pour utiliser des espaces de noms différents.
Ajout d’un fichier proxy PSI
Le téléchargement du Kit de développement logiciel (SDK) Project 2013 inclut les fichiers sources générés par la commande SvcUtil.exe pour l’assembly proxy. Les fichiers sources se trouvent dans le fichier Source.zip dans le Documentation\IntelliSense\WCF sous-répertoire . Au lieu de définir une référence à l’assembly proxy, vous pouvez ajouter un ou plusieurs fichiers sources à une solution Visual Studio. Par exemple, pour utiliser le service Project et le service Resource, ajoutez wcf. Project.cs et wcf. Resource.cs fichiers à la solution.
Dans WCF, la classe principale de chaque service PSI est définie par une interface et implémentée dans une classe cliente pour l’accès aux membres. Par exemple, l’interface SvcProject.Resource est implémentée dans la classe SvcProject.ResourceClient . Par exemple, pour définir un objet ResourceClient en tant que variable de classe nommée resourceClient, utilisez le code suivant. Dans l’exemple, la méthode SetClientEndpoints crée un objet resourceClient qui utilise le point de terminaison basicHttp_Project , qui est défini dans le fichier app.config. Pour plus d’informations sur le fichier app.config, consultez la section Ajout d’un fichier de configuration de service .
private static SvcResource.ResourceClient resourceClient;
. . .
private static void SetClientEndpoints()
{
resourceClient = new SvcResource.ResourceClient("basicHttp_Resource");
. . .
}
public void DisposeClients()
{
resourceClient.Close();
. . .
}
Remarque
Que vous utilisiez un assembly proxy PSI ou que vous ajoutiez un fichier proxy pour une référence de service Project nommée SvcResource, vous utiliseriez le même code pour créer et supprimer un objet resourceClient .
Ajout d’une référence de service
Si vous n’utilisez pas l’assembly proxy wcf ou si vous n’ajoutez pas de fichier proxy pour un service PSI, vous pouvez définir une ou plusieurs références de service individuelles directement dans Visual Studio. Vous pouvez également utiliser l’étape 1 de la procédure suivante pour créer des fichiers proxy mis à jour, afin de préparer le Documentation\IntelliSense\WCF\GenWCFProxyAssembly.cmd script inclus dans le téléchargement du Kit de développement logiciel (SDK) Project 2013.
Remarque
Pour définir une référence de service, vous devez utiliser Visual Studio sur l’ordinateur Project Server. Nous vous recommandons d’utiliser l’assembly proxy ProjectServerServices.dll ou d’ajouter des fichiers sources 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 à l’aide de Visual Studio 2012 sur un ordinateur exécutant une installation de test de Project Server :
Pour accéder aux services WCF principaux, exécutez Visual Studio sur l’ordinateur Project Server.
Dans Explorateur de solutions, cliquez avec le bouton droit sur le dossier Références, puis choisissez Ajouter une référence de service.
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.svc, puis appuyez sur Entrée. Remplacez GUID par le nom de répertoire virtuel de l’application de service Project Server, par exemple 534c37eb00d74ccfadcecf9827e95239. Remplacez ServiceName par le nom du service, par exemple Ressource (voir la figure 3).Vous pouvez obtenir le nom du répertoire virtuel du service Project Server de l’une des manières suivantes :
Ouvrez l’application Administration centrale de SharePoint 2013 dans votre navigateur. Choisissez Gérer les applications de service, puis choisissez l’application Project Server PSI Service souhaitée. Par exemple, choisissez ProjectServerService. L’URL de la page Gérer les sites Project Web App contient le nom du répertoire virtuel. Par exemple, dans
https://ServerName:8080/_admin/pwa/managepwa.aspx?appid=534c37eb-00d7-4ccf-adce-cf9827e95239, le nom du répertoire virtuel est534c37eb00d74ccfadcecf9827e95239(le nom du répertoire ne contient pas de tirets).Ouvrez la boîte de dialogue Gestionnaire des services Internet (IIS) sur l’ordinateur Project Server. Développez le nœud Services Web SharePoint dans le volet Connections, puis développez les répertoires virtuels de service en dessous, jusqu’à ce que vous trouviez le répertoire qui inclut un dossier PSI. Sélectionnez le répertoire, choisissez Paramètres avancés dans le volet Actions , puis copiez le nom du répertoire dans le champ Chemin d’accès virtuel .
Remarque
Il peut y avoir plusieurs répertoires virtuels du service Project Server. Veillez à choisir le répertoire virtuel qui contient le Project Web App instance souhaité.
Utilisez l’applet de commande get-SPServiceApplication dans Windows PowerShell installée avec SharePoint 2013. Dans le menu Démarrer de la barre des tâches, choisissez Tous les programmes, Choisissez Produits Microsoft SharePoint 2013, puis SharePoint 2013 Management Shell. Voici la commande et les résultats dans la fenêtre SharePoint 2013get- Management Shell pour les applications de service définies (vos GUID seront différents). Copiez le GUID de l’application de service Project Server.
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-6533b578286aSi vous connaissez le nom complet de l’application de service Project Server, vous pouvez l’utiliser pour obtenir la valeur GUID, par exemple :
PS > $projectService = "ProjectServerService" PS > (get-SPServiceApplication -Name $projectService).Id Guid ---- 534c37eb-00d7-4ccf-adce-cf9827e95239Remarque
Supprimez les tirets dans le GUID pour obtenir le nom du répertoire virtuel.
Les URL telles que
https://localhost:32843/534c37eb00d74ccfadcecf9827e95239/PSI/Resource.svcsont standard pour les services Project Server.Une fois la référence de service résolue, tapez le nom de la référence dans la zone de texte Espace de noms . Les exemples de code dans la documentation du développeur Project 2013 utilisent le nom d’espace de noms arbitraire Svc ServiceName. Par exemple, le service resource dans les exemples de code est nommé SvcResource.
Figure 3. Ajout de la référence de service de ressources WCF
Remplacez le fichier de web.config temporaire dans le répertoire du service Project par le fichier d’origine (renommé en web.config), puis réexécutez
iisreset.
Définition d’autres références
Les applications Project Server utilisent souvent d’autres services, tels que les services web SharePoint 2013. Si d’autres services ou références sont requis, ils sont notés dans l’exemple de code.
Les références locales pour l’exemple de code sont répertoriées dans les instructions using en haut de l’exemple.
Dans Explorateur de solutions, cliquez avec le bouton droit sur le dossier Références, puis choisissez Ajouter une référence.
Choisissez Parcourir, puis accédez à l’emplacement où vous avez stocké les DLL Project Server que vous avez copiées précédemment. Choisissez les DLL souhaitées, puis choisissez OK.
Remarque
Assurez-vous que les versions d’assembly sur votre ordinateur de développement correspondent exactement à celles de l’ordinateur Project Server cible.
Ajout d’un fichier de configuration de service
Si une application configure par programmation les services WCF, elle n’utilise pas de 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 web.config. Pour plus d’informations sur l’utilisation d’un fichier app.config ou la configuration programmatique des services WCF, consultez Procédure pas à pas : développement d’applications PSI à l’aide de WCF.
Lorsqu’elle génère un fichier source de proxy de service, la commande SvcUtil.exe crée également un fichier output.config qui est la base de l’élément system.serviceModel par défaut dans un fichier app.config ou un fichier web.config. Le téléchargement du Kit de développement logiciel (SDK) Project 2013 inclut un exemple de fichier output.config dans Documentation\IntelliSense\WCF\Source.zip. Par exemple, le fichier de output.config par défaut créé par SvcUtil.exe pour le service de ressources comprend deux liaisons nommées BasicHttpBinding_Resource et BasicHttpBinding_Resource1.
L’élément client inclut deux points de terminaison par défaut. Un point de terminaison concerne l’accès sécurisé à l’adresse HTTP sur le port 32843 et l’autre pour l’accès normal sur le port 32843, comme suit :
<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>
La configuration du service PSI n’utilise pas les liaisons et points de terminaison par défaut. Project Server exige que les applications accèdent aux services PSI via le serveur frontal ProjectServer.svc, qui fait office de routeur pour les appels aux services principaux. Pour créer le fichier app.config, procédez comme suit :
Si vous définissez une référence à l’assembly proxy ProjectServerServices.dll ou ajoutez le fichier source proxy pour un service, l’application ne contient pas de fichier app.config. Ajoutez un nouvel élément au projet Visual Studio. Dans la boîte de dialogue Ajouter un nouvel élément , choisissez le modèle Fichier de configuration d’application , nommez-le app.config, puis choisissez Ajouter.
Supprimez tout le texte du fichier app.config, 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 souhaitez utiliser plusieurs liaisons, 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="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>Remplacez
ServerName/ProjectServerNamedans l’adresse du point de terminaison client par le nom de votre serveur et Project Web App instance.Remplacez par
ServiceNamele nom du service PSI, par exemple Ressource. Veillez à remplacer les trois instances du nom du service, par exemple :<endpoint address="https://myserver/pwa/_vti_bin/PSI/ProjectServer.svc" behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding" bindingConfiguration="basicHttpConf" contract="SvcResource.Resource" name="basicHttp_Resource" />Pour utiliser plusieurs services PSI, créez un élément de point de terminaison pour chaque service et pour chaque élément de liaison utilisé par le service. Par exemple, les points de terminaison suivants configurent le client pour utiliser la liaison HTTP de base pour le service Project et le service QueueSystem.
Remarque
Si vous exécutez une application et recevez une erreur indiquant que le serveur est trop occupé ou que la requête HTTP n’est pas autorisée, vérifiez que les adresses de point de terminaison sont correctes dans le fichier 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>
Vous pouvez modifier un fichier app.config à l’aide du Rédacteur configuration du service WCF dans Visual Studio (dans le menu Outils). La figure 4 montre comment définir l’élément contract dans la boîte de dialogue Microsoft Service Configuration Rédacteur. Si la solution utilise l’assembly proxy PSI, ouvrez ProjectServerServices.dll dans le bin\debug répertoire de la solution Visual Studio. La boîte de dialogue Explorateur de type de contrat affiche tous les contrats de service WCF (voir la figure 5).
Figure 4. Utilisation de l’Éditeur de configuration de service WCF
Si la solution utilise un fichier proxy de service, tel que wcfResource.cs, compilez l’application, puis ouvrez le fichier exécutable dans le bin\debug répertoire. 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.
Figure 5. Utilisation de l’explorateur de type de contrat dans le Rédacteur configuration du service WCF
Utilisation de plusieurs authentifications
L’authentification des utilisateurs Project Server locaux, que ce soit par Authentification Windows ou l’authentification par formulaire, s’effectue via le traitement des revendications dans SharePoint. L’authentification multiple signifie que l’application web sur laquelle Project Web App est approvisionné prend en charge à la fois l’authentification Authentification Windows et l’authentification basée sur les formulaires. Si tel est le cas, tout appel à un service WCF qui utilise Authentification Windows échoue avec l’erreur suivante, car le processus de revendications ne peut pas déterminer le type d’utilisateur à authentifier :
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 résoudre le problème pour WCF, tous les appels aux méthodes PSI doivent se trouver dans un OperationContextScope défini pour chaque service PSI. N’imbriquez pas d’étendues pour plusieurs services ; Par exemple, lorsque vous utilisez des appels aux services Resource et Project, chaque ensemble d’appels doit se trouver dans sa propre étendue.
Dans l’exemple suivant, la méthode DisableFormsAuth peut être appelée à partir de chaque section OperationContextScope d’une application. La méthode supprime toute valeur d’en-tête qui a précédemment désactivé l’authentification par formulaire, afin que l’authentification par formulaire puisse continuer si le paramètre isWindowsAuth a la valeur false. Si isWindowsAuth a la valeur true, la méthode DisableFormsAuth désactive l’authentification par formulaire.
Dans la méthode WcfSample, l’objet projectClient est un instance de la classe 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:
// . . .
}
}
Remarque
Effectuer des appels PSI dans un OperationContextScope est nécessaire uniquement pour les applications qui s’exécutent dans un environnement d’authentification multiple. Si Project Server utilise uniquement Authentification Windows, il n’est pas nécessaire de définir une étendue et d’ajouter un en-tête de requête web qui désactive l’authentification par formulaire.
Le correctif pour une application ASMX est différent. Pour plus d’informations, consultez la section Utilisation de plusieurs authentifications dans Prérequis pour les exemples de code asMX dans Project.
Modification des valeurs des constantes génériques
La plupart des exemples ont une ou plusieurs variables que vous devez mettre à jour pour que l’exemple fonctionne correctement dans votre environnement. Dans l’exemple suivant, si ssl est installé, utilisez le protocole HTTPS au lieu du protocole HTTP. Remplacez ServerName par le nom du serveur que vous utilisez. Remplacez ProjectServerName par le nom de répertoire virtuel de votre site de serveur de projet, par exemple PWA.
const string PROJECT_SERVER_URI = "https://ServerName/ProjectServerName/";
Toutes les autres variables que vous devez modifier sont noté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 simples. Par exemple, si vous créez un projet, vous devez le publier avant qu’il puisse 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 Project Professionnel 2013 pour ouvrir le projet à partir de l’ordinateur Project Server et afficher les éléments souhaités.
Affichez les projets publiés dans la page Centre de projets de Project Web App (
https://ServerName/ProjectServerName/projects.aspx).Affichez le journal file d’attente dans Project Web App. Ouvrez la page Paramètres du serveur (choisissez l’icône Paramètres dans le coin supérieur droit), puis choisissez Mes travaux en file d’attente sous la section Paramètres personnels (
https://ServerName/ProjectServerName/MyJobs.aspx). Dans la liste déroulante Affichage, vous pouvez trier par tâche status. La status par défaut est En cours et Travaux ayant échoué la semaine dernière.Utilisez la page Paramètres du serveur dans Project Web App (
https://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx) pour gérer tous les travaux de file d’attente et supprimer ou forcer case activée objets d’entreprise. Vous devez disposer d’autorisations d’administration pour accéder à ces liens dans 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 afin d’afficher des informations sur les pages de détails du projet (PDP) dans les étapes du flux de travail.
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]
Nettoyage
Après avoir testé des exemples de code, des objets et des paramètres d’entreprise doivent être supprimés ou réinitialisés. Vous pouvez utiliser la page Paramètres du serveur dans Project Web App pour gérer les données d’entreprise ( https://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx). Les liens de la page Paramètres du serveur vous permettent de supprimer les anciens éléments, de forcer l’case activée projets, de gérer la file d’attente des travaux pour tous les utilisateurs et d’effectuer d’autres tâches d’administration.
Voici quelques-uns des liens de la page Paramètres du serveur à utiliser pour les activités de nettoyage classiques après l’exécution d’exemples de code :
Champs personnalisés d’entreprise et tables de choix
Gérer les travaux en file d’attente
Supprimer des objets d’entreprise
Forcer l’archivage des objets d’entreprise
Types de projets d’entreprise
Phases du flux de travail
Étapes du flux de travail
Pages de détails de projet
Périodes de rapports de temps
Paramètres et valeurs par défaut de la feuille de temps
Classifications de lignes
Les paramètres supplémentaires sont gérés par SharePoint Server 2013 pour chaque Project Web App instance, plutôt que par une page de paramètres Project Web App serveur spécifique. Dans l’application Administration centrale de SharePoint, choisissez Paramètres généraux de l’application, Choisissez Gérer sous Paramètres de Project Server, puis choisissez le Project Web App instance dans la liste déroulante de la page Paramètres du serveur. Par exemple, choisissez Gestionnaires d’événements côté serveur pour ajouter ou supprimer des gestionnaires d’événements pour le Project Web App instance sélectionné.