SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Sharepoint 2010 - ClientObjectModel: File.SaveBinaryDirect() wirft eine Exception

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
2 Beiträge
Sven H. erstellt 28 Juni 2010 08:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

 

ich habe eine Frage zum ClientObjectModel und zwar habe ich in einer Anwendung diverse Standardfunktionen abgebildet wie z.B. Dateien hochladen, Items lesen / aktualisieren.

 

Auf dem Server, auf dem auch der Sharepoint 2010 läuft, funktioniert die Anwendung problemlos.

Schwierig wird es erst sobald ich die Anwendung auf einem Client laufen lasse.

 

Beim Hochladen von Dateien kommt es bei der Methode File.SaveBinaryDirect() zu folgender Fehlermeldung:

„Die zugrunde liegende Verbindung wurde geschlossen: Eine Verbindung, deren Aufrechterhaltung erwartet wurde, ist vom Server geschlossen worden..“

 

Die Fehlermeldung als solches deutet zwar nicht auf ein Berechtigungsproblem hin, aber meine Fehleranalyse hat folgendes ergeben.

-          Funktionen wie Items lesen / aktualisieren funktionieren

-          Öffne ich im Vorfeld im Internet-Explorer die entsprechende Site bzw.  Dokumentenbibliothek  und starte anschließend erst die Anwendung so funktioniert auch die Methode File.SaveBinaryDirect()!

Daher gehe ich momentan davon aus, dass das Objekt "ClientContext" nicht ordnungsgemäß am Sharepoint Server angemeldet ist. Hier ein Quellcode-Ausschnitt:

      

             clientContext.AuthenticationMode = ClientOM.ClientAuthenticationMode.Default;

                    clientContext.Credentials = this.credentials;


Ich verwende den Account des lokalen Administrator bzw. meinen Domainen-Account der volle Berechtigungen trägt.

 

Über den Internet-Explorer stehen alle Funktionen einwandfrei zur Verfügung.

 

 

Hier noch mal die vollständige Funktion zum Hochladen einer Datei:

        using (ClientOM.ClientContext clientContext = new ClientOM.ClientContext(this.serverUrl + this.mySite))
        {
          clientContext.AuthenticationMode = ClientOM.ClientAuthenticationMode.Default;
          clientContext.Credentials = this.credentials;

          this.EnsureFolder(clientContext, bibliothek, String.Empty, objectType);
          this.EnsureFolder(clientContext, bibliothek, objectType, objectID);

          string uploadPath = "/" + bibliothek + "/";

          if (String.IsNullOrEmpty(objectType) == false)
            uploadPath += objectType + "/";
          if (String.IsNullOrEmpty(objectID) == false)
            uploadPath += objectID + "/";

          using (FileStream fileStream = new FileStream(localFilepath, FileMode.Open))
          {
            ClientOM.File.SaveBinaryDirect(clientContext, mySite + uploadPath + remoteFilename, fileStream, true);
          }
        }

        //Metadaten an DocumentItem übergeben
        this.SetDocumentProperties(bibliothek, objectType, objectID, remoteFilename, ref1Type, ref1Id, ref2Type, ref2Id);

        if (showSharepointFolder == true)
        {
          this.ShowSharepointList(bibliothek, objectType, objectID);
        }

        

Hat vielleicht jemand gleiche Erfahrungen gemacht und eine Lösung?

 

Viele Grüße,

Sven

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 28 Juni 2010 10:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nur eine Idee und ich weiß auch nicht, was bei Dir in mySite steht, aber SaveBinaryDirect erwartet einen relativen Pfad, alsi nicht den ganzen inkl. http://...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
2 Beiträge
Sven H. Als Antwort am 28 Juni 2010 10:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe das gerade überprüft, aufgelöst sehen die Werte wie folgt aus:

ClientOM.

ClientContext clientContext = new

 

ClientContext clientContext = new

ClientContext clientContext = new

 

 

ClientOM.ClientContext("http://server/test_seite");

ClientOM.
File.SaveBinaryDirect(clientContext, /test_seite/Archiv/Testdatei.xls, fileStream, true);

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 28 Juni 2010 11:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist jedenfalls nicht relativ zum ClientContext...

Viele Grüße
Andi
af @ evocom de
Blog