2010-12-06 10 views
7

J'utilise le modèle objet client SP2010 à télécharger sur une bibliothèque de documents, suivant l'exemple de Microsoft ici: http://msdn.microsoft.com/en-us/library/ee956524.aspx#SP2010ClientOMOpenXml_UploadingSharepoint 2010 Object Model client - Télécharger un document (409 Conflit)

Je suis face à un HTTP 409 (Conflit) code d'état lors de l'exécution du code suivant.

var clientContext = new ClientContext("http://myservername/sites/subsitename") { Credentials = LogonCredentials }; 
using (var fileStream = new FileStream(@"C:\Temp\Test.txt", FileMode.Open)) 
{ 
     Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, "/MyDocLibraryName/Test_FromClientOM.txt", fileStream, true); 
} 

Qu'est-ce que je fais mal?

Répondre

8

Le problème ici était que le site sur lequel je télécharge est un sous-site, pas la racine de sharepoint. Je ne sais pas si c'était un choix de "design" ou pas, mais il semble que vous deviez utiliser la racine de sharepoint pour ClientContext, au moins dans ce cas particulier.

Code de travail:

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); 
} 
5

je faisais face aussi une erreur 409 en essayant de télécharger un fichier via le modèle objet client SharePoint 2010. Assurez-vous absolument le chemin que vous téléchargez le fichier à existe complètement. L'appel ne créera aucun (sous) dossier. Cela n'a pas d'importance si vous connectez votre ClientContext au sous-site Web racine ou directement au sous-site, comme vous le dites. Assurez-vous simplement que vous alimentez toujours la méthode SaveBinaryDirect l'URL relative SPSite de l'endroit où télécharger. Par exemple, si vous connectez votre ClientContext à http://somesite/sites/subsitename, assurez-vous que vous passez également à SaveBinaryDirect la chaîne /sites/subsitename/documents/filename.txt, donc par rapport au SPSite et non au sous-site connexion à l'aide de votre ClientContext.