Commencer à créer des compléments hébergés par un fournisseur pour SharePoint
Les compléments hébergés par un fournisseur sont l’un des deux principaux types de Compléments SharePoint. Pour obtenir un aperçu rapide des Compléments SharePoint et des deux types différents, voir Compléments SharePoint.
Voici les informations principales à savoir sur les compléments hébergés par un fournisseur :
- Ils incluent une application web, un service ou une base de données qui est hébergé en externe à partir de la batterie de serveurs SharePoint ou de l’abonnement SharePoint Online. Il peuvent également inclure des composants SharePoint. Vous pouvez héberger les composants externes sur n’importe quelle pile d’hébergement web, y compris la pile LAMP (Linux, Apache, MySQL et PHP).
- La logique métier personnalisée dans le complément doit être exécutée soit sur les composants externes, soit dans JavaScript sur des pages SharePoint personnalisées.
Dans cet article, vous réaliserez les opérations suivantes :
- Configuration de votre environnement de développement
- Création du projet de complément
- Codage de votre complément
Configuration de votre environnement de développement
Pour configurer un environnement de développement pour des compléments SharePoint, plusieurs options s'offrent à vous. Dans cette section, nous vous expliquons l'option la plus simple. Pour d’autres alternatives, comme la configuration d’un environnement « entièrement local », reportez-vous à Outils.
Obtenir les outils
Si vous ne disposez pas déjà de Visual Studio 2013 ou version ultérieure, installez-le en suivant les instructions figurant à la rubrique Install Visual Studio. Nous recommandons d'utiliser la dernière version disponible dans le Centre de téléchargement Microsoft.
Visual Studio inclut les Outils de développement Microsoft Office pour Visual Studio, mais parfois une version des outils est publiée entre les mises à jour de Visual Studio. Pour être sûr que vous avez la dernière version des outils, exécutez le programme d'installation pour les Outils de développement Office pour Visual Studio 2013 ou le programme d'installation pour les Outils de développement Office pour Visual Studio 2015.
Reportez-vous à des versions antérieures de Visual Studio ou à une autre documentation Visual Studio.
Inscription à un abonnement Office 365 pour les développeurs
Notes
Vous avez peut-être déjà accès à un abonnement Office 365 pour les développeurs :
- Êtes-vous abonné à Visual Studio (MSDN) ? Les abonnés Visual Studio Ultimate et Visual Studio Premium reçoivent également un abonnement à Office 365 pour les développeurs. Obtenez cet avantage aujourd’hui.
- Disposez-vous de l’un des plans d’abonnement Office 365 suivants ? Si tel est le cas, reportez-vous à Créer un site du développeur dans un abonnement Office 365 existant.
Pour obtenir un plan Office 365, procédez comme suit :
Consultez la documentation relative au programme pour les développeurs Office 365 pour obtenir des instructions détaillées sur la façon de rejoindre le programme, de vous inscrire et de configurer votre abonnement.
Ouverture du site de développeur
Sélectionnez le lien Créer des compléments dans le coin supérieur gauche de la page pour ouvrir le site du développeur. Le site ressemble à celui présenté sur la figure suivante. Sur la page figure la liste Compléments en cours de test. Cela confirme que le site web a été créé avec le modèle Site du développeur de SharePoint. Si, à la place, un site d'équipe s'ouvre, patientez quelques minutes et lancez de nouveau votre site.
Notes
Notez l’URL du site. Elle vous servira lorsque vous créerez des projets de compléments SharePoint dans Visual Studio.
Page d’accueil de votre site du développeur avec la liste des compléments en cours de test
Création du projet de complément
Démarrez Visual Studio à l'aide de l’option Exécuter en tant qu’administrateur.
Dans Visual Studio, sélectionnez fichier > Nouveau > Nouveau projet.
Dans la boîte de dialogue Nouveau projet, développez le nœud Visual C#, le nœud Office/SharePoint, puis sélectionnez Compléments > Complément SharePoint.
Nommez le projet SampleAddIn, puis sélectionnez OK.
Dans la boîte de dialogue Spécifier les paramètres du complément SharePoint, procédez comme suit :
Indiquez l’URL complète du site SharePoint que vous souhaitez utiliser pour le débogage de votre complément. Il s’agit de l’URL du site du développeur. Utilisez HTTPS, et non HTTP dans l’URL. À un moment donné au cours de cette procédure ou peu de temps après son terme, vous serez invité à vous connecter à ce site. Le délai de l’invite varie. Utilisez les informations d’identification de l’administrateur (dans le domaine *.onmicrosoft.com) que vous avez créé une fois connecté à votre site de développeur, par exemple MonNom@contoso.onmicrosoft.com.
Sous Comment souhaitez-vous héberger votre complément SharePoint ?, sélectionnez Hébergé par un fournisseur.
Sélectionnez Suivant.
Sur la page Spécifier la version de SharePoint cible, sélectionnez SharePoint Online, puis Suivant.
Sous Quel type de projet d’application Web voulez-vous créer ?, sélectionnez Application Web Forms ASP.NET, puis Suivant.
Sous Comment souhaitez-vous procéder pour l’authentification de votre complément ?, sélectionnez Utiliser Windows Azure Access Control Service.
Dans l’Assistant, sélectionnez Terminer.
L'essentiel de la configuration a lieu lors de l'ouverture de la solution. Deux projets sont créés dans la solution Visual Studio : l'un pour le complément SharePoint et l'autre pour l'application web ASP.NET.
Codage de votre complément
Ouvrez le fichier AppManifest.xml. Dans l'onglet Autorisations, spécifiez l'étendue de collection de sites et le niveau d'autorisation Lecture.
Supprimez toutes les marques de révision dans la balise
<body>
du fichier Pages/Default.aspx de votre application web, puis ajoutez les contrôles HTML et ASP.NET suivants dans<body>
. Cet exemple utilise le contrôle UpdatePanel pour permettre un rendu de page partiel.<form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> <asp:UpdatePanel ID="PopulateData" runat="server" UpdateMode="Conditional"> <ContentTemplate> <table border="1" cellpadding="10"> <tr><th><asp:LinkButton ID="CSOM" runat="server" Text="Populate Data" OnClick="CSOM_Click" /></th></tr> <tr><td> <h2>SharePoint Site</h2> <asp:Label runat="server" ID="WebTitleLabel"/> <h2>Current User:</h2> <asp:Label runat="server" ID="CurrentUserLabel" /> <h2>Site Users</h2> <asp:ListView ID="UserList" runat="server"> <ItemTemplate > <asp:Label ID="UserItem" runat="server" Text="<%# Container.DataItem.ToString() %>"> </asp:Label><br /> </ItemTemplate> </asp:ListView> <h2>Site Lists</h2> <asp:ListView ID="ListList" runat="server"> <ItemTemplate > <asp:Label ID="ListItem" runat="server" Text="<%# Container.DataItem.ToString() %>"> </asp:Label><br /> </ItemTemplate> </asp:ListView> </td> </tr> </table> </ContentTemplate> </asp:UpdatePanel> </div> </form>
Ajoutez les déclarations suivantes au fichier Default.aspx.cs de votre application web.
using Microsoft.SharePoint.Client; using Microsoft.IdentityModel.S2S.Tokens; using System.Net; using System.IO; using System.Xml;
Dans le fichier Default.aspx.cs de votre application web, ajoutez ces variables dans la classe Page.
SharePointContextToken contextToken; string accessToken; Uri sharepointUrl; string siteName; string currentUser; List<string> listOfUsers = new List<string>(); List<string> listOfLists = new List<string>();
Ajoutez la méthode
RetrieveWithCSOM
dans la classe Page. Cette méthode utilise le CSOM SharePoint pour récupérer des informations sur votre site et les afficher sur la page.// This method retrieves information about the host web by using the CSOM. private void RetrieveWithCSOM(string accessToken) { if (IsPostBack) { sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]); } ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken( sharepointUrl.ToString(), accessToken); // Load the properties for the web object. Web web = clientContext.Web; clientContext.Load(web); clientContext.ExecuteQuery(); // Get the site name. siteName = web.Title; // Get the current user. clientContext.Load(web.CurrentUser); clientContext.ExecuteQuery(); currentUser = clientContext.Web.CurrentUser.LoginName; // Load the lists from the Web object. ListCollection lists = web.Lists; clientContext.Load<ListCollection>(lists); clientContext.ExecuteQuery(); // Load the current users from the Web object. UserCollection users = web.SiteUsers; clientContext.Load<UserCollection>(users); clientContext.ExecuteQuery(); foreach (User siteUser in users) { listOfUsers.Add(siteUser.LoginName); } foreach (List list in lists) { listOfLists.Add(list.Title); } }
Ajoutez la méthode
CSOM_Click
dans la classe Page. Cette méthode déclenche l'événement qui se produit lorsque l'utilisateur clique sur le lien Remplir les données.protected void CSOM_Click(object sender, EventArgs e) { string commandAccessToken = ((LinkButton)sender).CommandArgument; RetrieveWithCSOM(commandAccessToken); WebTitleLabel.Text = siteName; CurrentUserLabel.Text = currentUser; UserList.DataSource = listOfUsers; UserList.DataBind(); ListList.DataSource = listOfLists; ListList.DataBind(); }
Remplacez la méthode
Page_Load
existante par celle-ci. La méthodePage_Load
utilise des méthodes du fichier TokenHelper.cs pour récupérer le contexte à partir de l'objetRequest
et obtenir un jeton d'accès auprès de Microsoft Azure Access Control Service (ACS).// The Page_load method fetches the context token and the access token. // The access token is used by all of the data retrieval methods. protected void Page_Load(object sender, EventArgs e) { string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request); if (contextTokenString != null) { contextToken = TokenHelper.ReadAndValidateContextToken(contextTokenString, Request.Url.Authority); sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]); accessToken = TokenHelper.GetAccessToken(contextToken, sharepointUrl.Authority) .AccessToken; // For simplicity, this sample assigns the access token to the button's CommandArgument property. // In a production add-in, this would not be secure. The access token should be cached on the server-side. CSOM.CommandArgument = accessToken; } else if (!IsPostBack) { Response.Write("Could not find a context token."); return; } }
Le fichier Default.aspx.cs doit ressembler à ceci lorsque vous avez terminé.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.SharePoint.Client; using Microsoft.IdentityModel.S2S.Tokens; using System.Net; using System.IO; using System.Xml; namespace SampleAddInWeb { public partial class Default : System.Web.UI.Page { SharePointContextToken contextToken; string accessToken; Uri sharepointUrl; string siteName; string currentUser; List<string> listOfUsers = new List<string>(); List<string> listOfLists = new List<string>(); protected void Page_PreInit(object sender, EventArgs e) { Uri redirectUrl; switch (SharePointContextProvider.CheckRedirectionStatus(Context, out redirectUrl)) { case RedirectionStatus.Ok: return; case RedirectionStatus.ShouldRedirect: Response.Redirect(redirectUrl.AbsoluteUri, endResponse: true); break; case RedirectionStatus.CanNotRedirect: Response.Write("An error occurred while processing your request."); Response.End(); break; } } protected void CSOM_Click(object sender, EventArgs e) { string commandAccessToken = ((LinkButton)sender).CommandArgument; RetrieveWithCSOM(commandAccessToken); WebTitleLabel.Text = siteName; CurrentUserLabel.Text = currentUser; UserList.DataSource = listOfUsers; UserList.DataBind(); ListList.DataSource = listOfLists; ListList.DataBind(); } // This method retrieves information about the host web by using the CSOM. private void RetrieveWithCSOM(string accessToken) { if (IsPostBack) { sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]); } ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken( sharepointUrl.ToString(), accessToken); // Load the properties for the web object. Web web = clientContext.Web; clientContext.Load(web); clientContext.ExecuteQuery(); // Get the site name. siteName = web.Title; // Get the current user. clientContext.Load(web.CurrentUser); clientContext.ExecuteQuery(); currentUser = clientContext.Web.CurrentUser.LoginName; // Load the lists from the Web object. ListCollection lists = web.Lists; clientContext.Load<ListCollection>(lists); clientContext.ExecuteQuery(); // Load the current users from the Web object. UserCollection users = web.SiteUsers; clientContext.Load<UserCollection>(users); clientContext.ExecuteQuery(); foreach (User siteUser in users) { listOfUsers.Add(siteUser.LoginName); } foreach (List list in lists) { listOfLists.Add(list.Title); } } protected void Page_Load(object sender, EventArgs e) { string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request); if (contextTokenString != null) { contextToken = TokenHelper.ReadAndValidateContextToken(contextTokenString, Request.Url.Authority); sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]); accessToken = TokenHelper.GetAccessToken(contextToken, sharepointUrl.Authority) .AccessToken; CSOM.CommandArgument = accessToken; } else if (!IsPostBack) { Response.Write("Could not find a context token."); return; } } } }
Utilisez la touche F5 pour déployer et exécuter votre complément. Si une fenêtre Alerte de sécurité apparaît et vous demande d’approuver le certificat auto-signé Localhost, sélectionnez Oui.
Sélectionnez Approuver sur la page de consentement pour accorder des autorisations au complément. Visual Studio installe l’application web sur IIS Express, puis installe le complément sur votre site SharePoint de test et le lance. Une page qui comporte la table affichée dans la capture d’écran suivante apparaît. Pour afficher des informations récapitulatives sur votre site SharePoint, sélectionnez Remplir les données.
Étapes suivantes
Pour créer vos compléments, réalisez les étapes ci-dessous dans l’ordre suivant :
- Donner à votre complément hébergé par un fournisseur l’apparence de SharePoint
- Inclure un bouton personnalisé dans le complément hébergé par un fournisseur
- Obtenir un aperçu rapide du modèle objet SharePoint
- Ajouter des opérations d’écriture SharePoint au complément hébergé par un fournisseur
- Inclure un composant de complément dans le complément hébergé par le fournisseur
- Gérer les événements de complément dans le complément hébergé par le fournisseur
- Ajouter une logique de première exécution au complément hébergé par le fournisseur
- Déployer par programme un bouton personnalisé dans le complément hébergé par un fournisseur
- Gérer les événements d’élément de liste dans le complément hébergé par le fournisseur