0

: Ich bin mit Sharepoint,Unable Online SaveBinaryDirect mit Sharepoint zu verwenden, immer wieder zurückkehren 403

Ich versuche, ein Bild in einer Dokumentbibliothek von C# -Code zu laden.

Es ist mein Code

string webUrl = "https://mysharepointesite.sharepoint.com/"; 



    string targetSite = webUrl; 
    using (ClientContext ctx = ClaimClientContext.GetAuthenticatedContext(targetSite)) 
    { 
    if (ctx != null) 
    { 
     var lib = ctx.Web.Lists.GetByTitle("mesdocuments"); 
     ctx.Load(lib); 
     ctx.Load(lib.RootFolder); 
     ctx.ExecuteQuery(); 
     string sourceUrl = "C:\\temp\\picture.jpg";   
     using (FileStream fs = new FileStream(sourceUrl, FileMode.Open, FileAccess.Read)) 
     { 
     Microsoft.SharePoint.Client.File.SaveBinaryDirect (ctx, lib.RootFolder.ServerRelativeUrl + "/myPicture.jpg", fs, true); 
     } 
    } 

Aber ich immer einen 403 Fehler.

Ich überprüfe auch, ob es nicht das gleiche Problem war, das in diesem Beitrag erwähnt wird, aber ich denke nicht, dass es ist.

https://razirais.wordpress.com/2011/05/19/how-to-fix-sharepoint-online-403-forbidden-error-while-downloading-files-using-client-object-model/

Wenn ich es tun erhielt ich einen Fehler 405, und die Fiedler-Log zeigen mir, dass die Anforderung, den Kontext zu der Authentifizierungsseite umgeleitet werden versucht.

es ist da eine einstellung, die ich aktivieren muss? Irgendeine Idee, was ist mein Problem?

Antwort

1

Da Sie es in SharePoint online getaggt haben, gehe ich davon aus, dass Sie nur SharePoint Online verwenden.

Sie müssen den Benutzernamen und das Passwort an die ClientContext übergeben. So ändern Sie den Code wie folgt:

string webUrl = "https://mysharepointesite.sharepoint.com/"; 

string userName = "[email protected]"; 
string password = "password"; 

using (ClientContext ctx = new ClientContext(webUrl)) 
{ 
    SecureString securePassword = new SecureString(); 
    foreach (char c in password.ToCharArray()) 
    { 
     securePassword.AppendChar(c); 
    } 

    ctx.AuthenticationMode = ClientAuthenticationMode.Default; 
    ctx.Credentials = new SharePointOnlineCredentials(userName, securePassword); 

    if (ctx != null) 
    { 
     var lib = ctx.Web.Lists.GetByTitle("mesdocuments"); 
     ctx.Load(lib); 
     ctx.Load(lib.RootFolder); 
     ctx.ExecuteQuery(); 
     string sourceUrl = "C:\\temp\\picture.jpg";   
     using (FileStream fs = new FileStream(sourceUrl, FileMode.Open, FileAccess.Read)) 
     { 
     Microsoft.SharePoint.Client.File.SaveBinaryDirect (ctx, lib.RootFolder.ServerRelativeUrl + "/myPicture.jpg", fs, true); 
     } 
    } 

} 

außerdem sicher, dass Sie die richtige CSOM dll d.h werden unter Verwendung der Sharepoint Online CSOM SDK. Wenn Sie Ihre aktuelle Implementierung betrachten, denke ich, dass Sie den Client-Kontext falsch verwenden, der den Fehler verursacht.

Sie können das neueste SDK über den unten genannten Link oder mit Nuget (bevorzugt) herunterladen.

Wenn Sie das SDK herunterladen, müssen Sie möglicherweise manuell auf die DLLs aus dem Ordner verweisen, in dem es installiert ist.

Normalerweise installiert, wenn im C:-Laufwerk, die Lage ist:

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI.

von dort müssen Sie die Microsoft.SharePoint.Client.dll und Microsoft.SharePoint.Client.Runtime.dll Dateien in Ihrem Projekt verweisen.

Download-Link - SharePoint Online Client Components SDK

Nuget Paket - Microsoft.SharePointOnline.CSOM

Auch wenn Sie kein Fan sind Benutzername und Passwort von geben, können Sie die Client-ID und Client-Schlüssel verwenden. Um das zu verwenden, können Sie einen Blick auf meine Antwort werfen here

+0

Vielen Dank. Du löst meine Probleme. –

Verwandte Themen