J'utilise le modèle d'objet client SP2010 à télécharger dans une bibliothèque de documents, en suivant la tête de Microsoft ici: http://msdn.microsoft.com/en-us/library/ee956524.aspx#ssp2010Clientomopenxml_uploading
Je suis confronté à un code d'état HTTP 409 (conflit) lors de l'exécution Le code suivant. p> Qu'est-ce que je fais mal? p> p>
4 Réponses :
Le problème ici était que le site que je télécharge sur est un sous-titre, et non la racine de SharePoint. Je ne sais pas si c'était un choix de "conception" ou non, mais il semble que vous devez utiliser la racine de SharePoint pour le clientContext, au moins dans ce cas particulier.
Code de travail: P>
var clientContext = new ClientContext("http://myservername") { Credentials = LogonCredentials }; using (var fileStream = new FileStream(@"C:\Temp\Test.txt", FileMode.Open)) { Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, "/sites/subsitename/MyDocLibraryName/Test_FromClientOM.txt", fileStream, true); }
Je faisais également face à une erreur 409 lors de la tentative de téléchargement d'un fichier via le modèle d'objet client SharePoint 2010. Assurez-vous absolument le chemin que vous téléchargez le fichier sur complètement fort> existe. L'appel ne créera aucun (sous) dossiers. Peu importe si vous connectez votre clientContext à la sous-bande racine ou directement au sous-titre comme vous le dites. Assurez-vous simplement que vous nourrissez toujours la méthode SauvegaryDirect L'URL relative SPSITE de l'endroit à télécharger sur celui-ci existe. P>
Par exemple, si vous connectez votre clientContext à http: // somesite / sites / sous-nom , assurez-vous Vous passez également à SavotbinaryDirect aussi la chaîne /sites/sites/sites/suSitename/documents/filename.txt, donc par rapport au SPSITE et non le sous-titre que vous connectez à l'aide de votre clientContext. P>
Soledad Pano a une entrée de blog Erreur de fichier de téléchargement SharePoint:" Le serveur distant a renvoyé une erreur: (409) Conflit ', qui m'a aidé: P>
J'ai compris que le problème était le nom de la bibliothèque. Il contenait un tiret dessus, comme "My-LibraryName". Quand je l'ai renommé sans le tableau de bord, il a commencé à travailler p> blockQuote>
Merci beaucoup. C'était aussi le problème exact dans mon cas. Cela m'a définitivement sauvé un peu de temps.
Dans mon cas, le fichier a été téléchargé en utilisant SavotbinaryDirect dans une bibliothèque avec Versioning activée. Si le fichier n'est pas enregistré, toutes les tentatives ultérieures de téléchargement d'une version plus récente entraîneront l'erreur 409. Assurez-vous d'enregistrer après le téléchargement lorsque la version suivante est allumée.
var clientContext = (ClientContext)file.Context; destinationWebContext.Load(destinationList, d => d.ParentWebUrl); destinationWebContext.Load(destinationList, d => d.RootFolder.ServerRelativeUrl); clientContext.Load(file, f => f.ServerRelativeUrl); clientContext.Load(file, f => f.Name); if (clientContext.HasPendingRequest) clientContext.ExecuteQueryRetry(); if (destinationWebContext.HasPendingRequest) destinationWebContext.ExecuteQueryRetry(); var location = string.Format("{1}/{2}", destinationList.ParentWebUrl, destinationList.RootFolder.ServerRelativeUrl, file.Name); var fileInfo = File.OpenBinaryDirect(clientContext, file.ServerRelativeUrl); File.SaveBinaryDirect(destinationWebContext, location, fileInfo.Stream, overwrite); File newFile = destinationWebContext.Web.GetFileByServerRelativeUrl(location); newFile.CheckIn("Checked in by provisioning service", Microsoft.SharePoint.Client.CheckinType.MajorCheckIn); destinationWebContext.ExecuteQuery();