Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1907 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  C# et Sharepoint

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C# et Sharepoint

n°1339521
moi23372
Posté le 05-04-2006 à 11:37:22  profilanswer
 

Voila, je dois pouvoir à partir de mon application C# accéder à SharePoint. (WebService).  
J'ai trouvé sur le site de microsoft un WebService "SPFile" à ajouter à Sharepoint pour pouvoir accéder à la Document Library.
 
Dés que je tente d'accéder à mon site sur Sharepoint, j'ai droit à une erreur comme quoi l'url n'a pas peu être resolue. Cette erreur peut peut être venir de la config du serveur et plusieurs personnes travaillent dessus actuellement. Donc à voir
 
Donc voila, est ce que quelqu'un à déjà bosser en C# avec SharePoint? Franchement, la doc est très faible et peu d'exemple de programmation. Si quelqu'un aurait sous la main un exemple pour accéder à la document library (ajout/suppression/listing) je lui en serais très reconnaissant.

mood
Publicité
Posté le 05-04-2006 à 11:37:22  profilanswer
 

n°1339761
alien_nan
Posté le 05-04-2006 à 15:48:07  profilanswer
 

Code :
  1. GetConnectionString => http://portail/sites/NomSite
  2. SPSite _site = new SPSite(GetConnectionString);
  3. _site.CatchAccessDeniedException = false;
  4. SPWeb _web = _site.OpenWeb();
  5. SPListCollection doclists = _web.GetListsOfType(SPBaseType.DocumentLibrary);
  6. doclists.IncludeRootFolder = true;
  7. return doclists[DisplayName];


 
Cet exemple te permet d'acceder à n'importe quelle liste d'un site wss quelconque
Après tu peux encapsuler l'ensemble dans un webService. Je sais qu'il y a aussi une collection de webService sous Sharepoint, mais je ne retrouve plus comment y accéder...
 
edit : http://www.microsoft.com/downloads [...] laylang=en
section platform / microsoft windows sharepoint services /reference / webservice


Message édité par alien_nan le 05-04-2006 à 15:51:36
n°1340047
moi23372
Posté le 05-04-2006 à 20:57:53  profilanswer
 

merci bcp je regarderais ça
 
les web services se trouve dans vt_bin il me semble... mais ne sont guere fameux puisqu'il retourne une XMLNODE. merci pour le parsing. :D  
 
enfin je te remercie pour cette piste. Car je suis vraiment dans la merde à ce niveau la...

n°1343328
moi23372
Posté le 10-04-2006 à 17:15:43  profilanswer
 

je t'ai envoyé un mail.  
 
Je suis dans la panade.  
 
Faut il peut être avoir un client sharepoint pour pouvoir accéder à la lib?
Moi j'ai piqué la dll (Microsoft.Sharepoint.dll) sur le server et je l'ai mis sur mon pc de travail. Mais j'ai une erreur de sécurité.
 
Peux tu m'en dire plus?

n°1359086
cpetter
Posté le 03-05-2006 à 22:47:42  profilanswer
 

moi23372 a écrit :

je t'ai envoyé un mail.

 

Je suis dans la panade.

 

Faut il peut être avoir un client sharepoint pour pouvoir accéder à la lib?
Moi j'ai piqué la dll (Microsoft.Sharepoint.dll) sur le server et je l'ai mis sur mon pc de travail. Mais j'ai une erreur de sécurité.

 

Peux tu m'en dire plus?

 


Salut
 
Je viens de voir ton poste, et j'ai le même problème !
Aurais-tu résolu ton problème ??
 
Merci d'avance
 
 

n°1369540
ADJ Design
Posté le 18-05-2006 à 12:21:06  profilanswer
 

Bonjour, je dois également réaliser ce type de connection. Mon but est de réaliser un composant capable de récupérer un document créé par le biai de  Sharepoint et de le transmettre en XML à mon application en C# (en vue d'un traitement).
 
Autrement dit si je pouvais me connecter à la document library et retourner un XML Node, cela serait magnifique!! J'ai pris soin d'importer les dll de Sharepoint, à savoir :
- Microsoft.Sharepoint.Security.dll
- Microsoft.Sharepoint.Dsp.dll
- Microsoft.Sharepoint.Library.dll
- Microsoft.Sharepoint.dll
 
Voici mon code de test, basé sur ce que alien_nan a écrit précédemment.
 

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Microsoft.SharePoint.Dsp;
  5. using Microsoft.SharePoint.Library;
  6. using Microsoft.SharePoint.Security;
  7. using Microsoft.SharePoint.WebControls;
  8. using Microsoft.SharePoint;
  9. using System.Web;
  10. using System.IO;
  11. namespace RécupérationContenu
  12. {
  13.     class Program
  14.     {             
  15.         static void Main(string[] args)
  16.         {
  17.             SPSite MonSPsite = new SPSite("http://mondomaine:8098/" );
  18.             MonSPsite.CatchAccessDeniedException = false;
  19.             SPWeb MonSPweb = MonSPsite.OpenWeb();
  20.             SPListCollection doclists = MonSPweb.GetListsOfType(SPBaseType.DocumentLibrary);
  21.             Console.WriteLine("Récupération de la SPListCollection" );
  22.             try
  23.             {
  24.                 doclists.IncludeRootFolder = true;
  25.             }
  26.             catch (Exception ex)
  27.             { Console.WriteLine("\nErreur : " + ex.Message); }
  28.             try
  29.             {
  30.                 Console.WriteLine(doclists[0].Title.ToString());
  31.             }
  32.             catch (Exception ex)
  33.             { Console.WriteLine("\nErreur : " + ex.Message); }
  34.             Console.ReadLine();
  35.         }
  36.     }
  37. }


 
Une erreur m'est retournée (1 fois par try/catch forcément) : "Retrieving the COM class factory for component with CLSID BDEADEBD-C265-11D0-BCED-00A0C90AB5OF} failed due to the following error : 80040154"
 
Sachant que je ne suis pas admin de la machine sur laquelle est installé sharepoint, est ce une erreur de sécurité ? (>> COM).
 
N'étant pas encore à l'aise avec C#/WSS, une interraction de ce type est elle réalisable ?  
 
Je suis un peu à court d'idée pour réussir à récupérer mes documents. Quelqu'un pourrait me remettre sur la voie ?
(J'ai sans aucun doute oublié qqch^^).  
 
Merci


Message édité par ADJ Design le 18-05-2006 à 14:40:11
n°1370454
moi23372
Posté le 19-05-2006 à 12:01:52  profilanswer
 

Salut,
Moi dans le cadre de mon projet, on a abandonné Sharepoint. Il existe un Web Service SPFile.asmx à installer sur le serveur Sharepoint qui doit normalement permettre la gestion de la document library. Cependant, je ne suis jamais parvenu à le marché.  
 
Concernant l'erreur COM, normal, tu ne peux pas, problème de sécurité, faut que tu sois sur la machine.
Tu peux imaginer de créer toi même ton Web Service pour Sharepoint, cependant, c'est vachement lourd à faire aussi. C'est trop blackbox à mon gout

n°1372352
alien_nan
Posté le 22-05-2006 à 16:54:22  profilanswer
 

=> effectivement un pb de droit.
 
Tout les dévs que j'ai fait était installé sur le serveur , donc pas de souci à ce niveau la. Sinon, tu fais un web service qui attaque les libs et qui présente l'info que tu souhaites aller chercher

n°1372998
ADJ Design
Posté le 23-05-2006 à 11:50:15  profilanswer
 

Bon un petit pas en avant. J'ai continué mon exploration sur le web pour consulter les travaux de nos amis anglophones. J'arrive à récupérer des éléments créés. Ici je vous donne le code pour récupérer : Les sites crés, Les listes de collections.
 
Première étape, les Web Services.
Dans Visual Studio, Click droit sur Reference, Add WebRéférence, et entrer l'addresse du site réalisé avec sharepoint : http://monsite:monport/
Tous les webservices ainsi que les méthodes seront "importés" dans l'application.
 
Notez bien le nom de la référence web, c'est très important, et remplacez dans mon code 'nomReferenceWeb' par le nom de votre référence web !!
 
Ensuite le code, dsl il est très mal commenté, mais il est simple en même tps ^^  
- 1 Méthode pour récupérer les sites créés et leur url
- 1 Méthode pour récupérer les collections de liste
- 1 Méthode pour exporter le Node créé en un fichier XML.
- Et un main !!
 
 
 
 

Code :
  1. using System;
  2. using Microsoft.SharePoint.Dsp;
  3. using Microsoft.SharePoint.Library;
  4. using Microsoft.SharePoint.Security;
  5. using Microsoft.SharePoint.WebControls;
  6. using Microsoft.SharePoint;
  7. using SharePointServices;
  8. using System.Web;
  9. using System.Xml;
  10. using System.Net;
  11. namespace RécupérationContenu
  12. {
  13.     class ClassTest
  14.     {
  15.         private static XmlNode ListCollection(string url, string UserName, string Password, string Domain)
  16.         {
  17.             string currentSite = url;
  18.             string suffix = @"/_vti_bin/Lists.asmx";
  19.             XmlNode n = null;
  20.             try
  21.             {
  22.                 nomReferenceWeb.ListsSoap l = new nomReferenceWeb.ListsSoap();
  23.                 l.PreAuthenticate = true;
  24.                 l.Credentials = new System.Net.NetworkCredential(UserName, Password, Domain);
  25.                 l.Url = url + suffix;
  26.                 n = l.GetListCollection();
  27.             }
  28.             catch (Exception)
  29.             {
  30.                 Console.WriteLine("Erreur d'identification" );
  31.             }
  32.             return n;
  33.         }
  34.         private static XmlNode WebCollection(string url, string UserName, string Password, string Domain)
  35.         {
  36.             string currentSite = url;
  37.             string suffix = @"/_vti_bin/webs.asmx";
  38.             XmlNode n = null;
  39.             try
  40.             {
  41.                 nomReferenceWeb.WebsSoap w = new nomReferenceWeb.WebsSoap();
  42.                 w.PreAuthenticate = true;
  43.                 w.Credentials = new System.Net.NetworkCredential(UserName, Password, Domain);
  44.                 w.Url = url + suffix;
  45.                 n = w.GetWebCollection();
  46.             }
  47.             catch (Exception)
  48.             {
  49.                 Console.WriteLine("Erreur d'identification" );
  50.             }
  51.             return n;
  52.         }
  53.         private static void nodeToFile(XmlNode n)
  54.         {
  55.             XmlDocument document = new XmlDocument();
  56.             document.LoadXml("<XML></XML>" );
  57.            
  58.             XmlNode newElem;
  59.             newElem = document.ImportNode(n, true);
  60.            
  61.             XmlElement root = document.DocumentElement;
  62.             root.AppendChild(newElem);
  63.            
  64.             XmlTextWriter fileOut = new XmlTextWriter("d:/test.xml", System.Text.Encoding.UTF8);
  65.             fileOut.Formatting = Formatting.Indented;
  66.             document.WriteTo(fileOut);
  67.             fileOut.Flush();
  68.             fileOut.Close();
  69.         }
  70.         static void Main(string[] args)
  71.         {
  72.             Console.WriteLine("Affichage des résultats" );
  73.             XmlNode XN;
  74.             XN = WebCollection("http://monsite:monport/", "monLogin", "monPWD", "nomDomaine" );
  75.             foreach (System.Xml.XmlNode sn in XN.ChildNodes)
  76.             {
  77.                 Console.WriteLine(sn.Attributes["Title"].Value + " - " + sn.Attributes["Url"].Value);
  78.             }
  79.             XN = ListCollection("http://monsite:monport/", "monLogin", "monPWD", "nomDomaine" );
  80.             nodeToFile(XN);
  81.             Console.WriteLine("Terminé" );
  82.             Console.ReadLine();
  83.         }
  84.     }
  85. }


 
Il n'y a aucune révolution dans ce code, cependant, cela peut permettre à certains de comprendre comment réaliser une interraction entre c# et Sharepoint. Il suffit maintenant de parcourir la MSDN en recherchant le nom des webservices, comme cela vous pouvez récupérer le contenu souhaité, ou encore réaliser de opérations de maintenance.
 
Des liens qui m'ont aidé pour les webservices (j'espère que cela ne sera pas censuré, mon but n'est pas de faire de la pub pour quiconque, mais de documenter ma recherche)
Liste des webservices : http://www.c-sharpcorner.com/Code/ [...] ointWS.asp
Pratique pour vérifier graphiquement login, mdp, domaine, ... : http://blogs.leadit.be/files/sharepointexplorer.zip
 
Mon but est maintenant de créer des groupes utilisateurs avec sharepoint, de créer des articles pour ces groupes et de les récupérer au format XML. J'espère ne pas avoir trop de problème... On verra !!


Message édité par ADJ Design le 23-05-2006 à 15:01:22
n°1377646
ADJ Design
Posté le 30-05-2006 à 15:57:48  profilanswer
 

Après avoir exploré le sujet une fois de plus, pour retrouver mes articles et mes listes, il suffit d'utiliser le Webservice "Lists Service" de Sharepoint.  
Il contient plusieurs méthodes, dont :  
 
- GetCollection(...) pour retrouver toutes mes collections
- GetListItems(...) pour retrouver les articles à partir d'une collection.
 
Penser à utiliser les requête SOAP, cela permet de récupérer les articles selon certains critères (des requêtes quoi !!)
 
Télécharger le Sharepoint SDK, il contient plein d'info et d'exemples ^^


Message édité par ADJ Design le 30-05-2006 à 15:58:14
mood
Publicité
Posté le 30-05-2006 à 15:57:48  profilanswer
 

n°1383595
ADJ Design
Posté le 08-06-2006 à 11:44:28  profilanswer
 

Je suis bloqué une fois de plus avec Sharepoint... voilà, je dois utiliser 2 web Services que je n'arrive pas à importer sous Visual Studio 2005.
Il s'agit des services webs suivants :
 
- Site Data Service
- Imaging Service
 
J'ai beau importer mes web Services de Sharepoint en faisant : "Add Web Référence", mais malheureusement, il en importe 8, mais pas ceux là... Une idée ??
 
Evidemment ces web Services vont me permettre d'extraire et d'analyser des éléments sur mes sites, et télécharger des images, entre autre...
 
Comment peut on les ajouter ??


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  C# et Sharepoint

 

Sujets relatifs
SharePointSharepoint & WebParts...
Nom de Webpart dans sharepoint 
Plus de sujets relatifs à : C# et Sharepoint


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR