IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problème de récupération d'un document dans Sharepoint 2013 via CMIS


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Problème de récupération d'un document dans Sharepoint 2013 via CMIS
    Bonjour à tous,

    Je développe une classe à l'aide de DotCMIS, fournit par Apache pour permettre la connexion à une GED (Alfresco / Sharepoint 2013) pour envoyer ou récupérer des documents.

    Pour le moment, j'arrive à créer des répertoires, envoyer des documents et mettre à jour les documents.

    Mon problème, c'est que je n'arrive pas à récupérer mes documents.

    D’après les tutos que j'ai pu trouver sur le NET, la méthode pour récupérer un document dans un répertoire serait la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    string repertoireCmis = "/Dossier de test";
    // Récupération de l'identifiant du répertoire
    string idFolder = session.GetObjectByPath(repertoireCmis).Id;
     
    ICmisObject cmisobj = session.GetObject((session.CreateObjectId(idFolder)));
    IFolder rep = (IFolder)cmisobj;
     
    IEnumerable<ICmisObject> liste = rep.GetChildren();
     
    // Puis on parcourt la liste
     
    foreach (var fichier in liste)
    {
    	try
    	{
    		IDocument iDocument = (IDocument)fichier;
    		IContentStream iContentStream = iDocument.GetContentStream();
    		IProperty description = iDocument["cmis:description"];
     
    		if (iContentStream.Stream != null)
    		{
    			if (description.Value == null || !description.Value.ToString().Contains("--t"))
    			{
    				FileStream fileStream = File.OpenWrite(Path.Combine(DossierDestination, fichier.Name));
    				System.IO.Stream stream = iContentStream.Stream;
    				int position;
    				byte[] Buffer = new byte[4096];
     
    				do
    				{
    					position = stream.Read(Buffer, 0, 4096);
    					fileStream.Write(Buffer, 0, position);
    				} while (position != 0);
     
    				stream.Close();
    				fileStream.Close();
     
    				Dictionary<string, object> proprietes = new Dictionary<string, object>();
    				if (description.Value == null)
    					proprietes["cmis:description"] = "--t";
    				else
    				{
    					proprietes["cmis:description"] = description.Value.ToString() + " --t";
    				}
     
    				var objectCMISSource = fichier.UpdateProperties(proprietes);
     
    				if (fichier.Id == objectCMISSource.Id)
    				{
    					objectCMISSource.Refresh();
    				}
     
    				resultat = true;
    			}
    		}
    		else
    		{
     
    		}
    	}
    	catch (Exception ex)
    	{
    	}
    }
    Sauf qu'au moment de remplir ma liste avec rep.GetChildren(), j'ai une erreur : 401 UNAUTHORIZED.

    À savoir que ce problème se produit uniquement lorsque je veux récupérer un document sur Sharepoint 2013. Le code ci-dessus fonctionne correctement sur Alfresco

    En espérant que quelqu'un pourra me venir en aide

    Cordialement

    Frank

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Salut Franck,

    La comme ca c'est difficile de savoir, est-ce que tu peux fournir une stacktrace complete? Ca aiderai a savoir a quel niveau ca explose.
    Sinon est-ce que ton utilisateur peux voir le contenu du document? Ca donne quoi par une autre API (genre REST)?
    Sharepoint est clairement capricieux sur les permissions et je pense qu'il faut deja determiner si ca vient de sharepoint lui meme et de ta facon d'utiliser CMIS
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour Alain,

    Oui, mon utilisateur peut voir le contenu du dossier via l'interface de sharepoint.

    En ce qui concerne l'appel de connexion, j'utilise déjà REST ( http://mon_site/_vti_bin/cmis/rest?getRepositories"; )

    Ce qui est d'autant plus étrange, c'est que je peux télécharger un document sous condition de fournir le chemin complet.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ICmisObject cmisobj = session.GetObjectByPath("/myNewFolder/R0NXQV0B.pdf");
    IDocument document = (IDocument)cmisobj;
    IContentStream contentStream = document.GetContentStream();
    URI passé qui retourne l'erreur est la suivante : http://mon_site/_vti_bin/cmis/rest/6...00&skipCount=0

    En ce qui concerne les stacktraces.

    à DotCMIS.Binding.AtomPub.AbstractAtomPubService.Read(UrlBuilder url) dans C:\Users\administrateur\Desktop\chemistry-dotcmis-0.7-src\src\binding\atompub\atompub.cs:ligne 448
    à DotCMIS.Binding.AtomPub.NavigationService.GetChildren(String repositoryId, String folderId, String filter, String orderBy, Nullable`1 includeAllowableActions, Nullable`1 includeRelationships, String renditionFilter, Nullable`1 includePathSegment, Nullable`1 maxItems, Nullable`1 skipCount, IExtensionsData extension) dans C:\Users\administrateur\Desktop\chemistry-dotcmis-0.7-src\src\binding\atompub\atompub.cs:ligne 1136
    à DotCMIS.Client.Impl.Folder.<>c__DisplayClass4.<GetChildren>b__3(Int64 maxNumItems, Int64 skipCount) dans C:\Users\frank.boillod\Desktop\chemistry-dotcmis-0.7-src\src\client\client-objects.cs:ligne 1124
    à DotCMIS.Client.Impl.PageFetcher`1.FetchNextPage(Int64 skipCount) dans C:\Users\administrateur\Desktop\chemistry-dotcmis-0.7-src\src\client\client-utils.cs:ligne 563
    à DotCMIS.Client.Impl.AbstractEnumerator`1.GetCurrentPage() dans C:\Users\administrateur\Desktop\chemistry-dotcmis-0.7-src\src\client\client-utils.cs:ligne 528
    à DotCMIS.Client.Impl.CollectionEnumerator`1.MoveNext() dans C:\Users\administrateur\Desktop\chemistry-dotcmis-0.7-src\src\client\client-utils.cs:ligne 608
    à Test.Program.TelechargerFichiers(ISession session, String Bibliotheque, String DossierDestination) dans C:\Users\administrateur\Desktop\chemistry-dotcmis-0.7-src\Test\Program.cs:ligne 208
    à Test.Program.Main(String[] args) dans C:\Users\administrateur\Desktop\chemistry-dotcmis-0.7-src\Test\Program.cs:ligne 146
    à System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()

    Je poste également ci-dessous une capture d'écran du détail de l'exception.

    Nom : 2015-06-01_09-12-16.png
Affichages : 459
Taille : 60,2 Ko

    En espérant, que ça puisse aider à résoudre mon problème.

    Cordialement

    Frank

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Hum, comment realise tu ton authentification?
    J'essaierai de reproduire avec un fidler ou wireshark dans le but de voir quel est requete qui est veritablement exeute. L'idee est de verifier si ce qui est lie a authentification est correct.
    Si tout est la, il faut regarder cote sharepoint, peut etre au niveau des permissions.
    Si il te manque un header c'est cote CMIS qui n''authentifie pas correctement.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour Alain,

    L'authentification de fait via un compte LDAP.

    Cordialement

    Frank

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Up

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour à tous,

    Je suis toujours bloqué sur ce problème

    Après avoir passé beaucoup de temps sur le Net pour glaner des informations afin de résoudre mon problème, il est possible que ce soit une mauvaise configuration du serveur SharePoint.

    N'étant pas un expert Sharepoint, je ne sais par où commencer afin de vérifier si les droits de lister les documents d'un répertoire sont bien actifs.

    Si un expert passe par là, je suis preneur pour un coup de pouce

    Cordialement

    Frank

Discussions similaires

  1. problème de récupération de données String dans un tableau
    Par simonteb dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/07/2012, 17h21
  2. [SAX] Problème de récupération d'une valeur dans un attribut d'une balise
    Par Antheadousa dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 10/01/2012, 23h29
  3. [Graphics View] Problème de récupération de QList<QGraphicsItem *> dans une autre classe
    Par ChevalierN dans le forum Débuter
    Réponses: 13
    Dernier message: 07/01/2012, 18h04
  4. [XL-2007] Problème Macro. Récupération de l'année dans une cellule
    Par PC1967 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/02/2010, 11h08
  5. Problème pour ouvrir des docs office dans sharepoint
    Par fifili64 dans le forum SharePoint
    Réponses: 5
    Dernier message: 10/12/2008, 22h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo