2017-10-10 3 views
0

Ich versuche, eine Verbindung zur SharePoint Online-Website mit C# und dem clientseitigen Objektmodell (CSOM) herzustellen. Ich bin ein externer Benutzer und kann mit meinem Browser auf die URL zugreifen, aber wenn ich das programmatisch versuche, kann ich nicht sagen, dass der Anmelde-Name oder das Passwort nicht mit dem Microsoft-Account-System übereinstimmt. Im Folgenden ist das Codebeispiel, das ich ausprobiert habe. Ich habe den richtigen Benutzernamen/Passwort. Jede Hilfe wird geschätzt.Herstellen einer Verbindung zu SharePoint Online mithilfe eines externen Benutzers mit C# und clientseitigem Objektmodell (CSOM)

Um Klarheit zu schaffen - sieht mein externer Benutzer wie myemail#EXT#@companyname.onmicrosoft.com (das @ Zeichen in myemail wird durch einen Unterstrich ersetzt).

string siteUrl = "https://companyname.sharepoint.com/sites/ERCT"; 
using (ClientContext clientContext = new ClientContext(siteUrl)) 
{ 
    var psd = "Password".ToCharArray(); 
    SecureString secureString = new SecureString(); 
    foreach (char c in psd) secureString.AppendChar(c); 
    //psd.ToList().ForEach(secureString.AppendChar); 

    clientContext.Credentials = new SharePointOnlineCredentials("[email protected]", secureString); 
    SP.List oList = clientContext.Web.Lists.GetByTitle("ListName"); 

    CamlQuery camlQuery = new CamlQuery(); 
    camlQuery.ViewXml = "<View><RowLimit>100</RowLimit></View>"; 

    ListItemCollection collListItem = oList.GetItems(camlQuery); 

    clientContext.Load(collListItem, 
    items => items.Include(
     item => item.Id, 
     item => item.DisplayName, 
     item => item.HasUniqueRoleAssignments)); 

    clientContext.ExecuteQuery(); 

    foreach (ListItem oListItem in collListItem) 
    { 
     Console.WriteLine("ID: {0} \nDisplay name: {1} \nUnique role assignments: {2}", 
     oListItem.Id, oListItem.DisplayName, oListItem.HasUniqueRoleAssignments); 
    } 
} 
+0

Verwenden Sie Proxy, um eine Verbindung zum Internet herzustellen? Das könnte der Grund sein, – Matt

+0

@Matt - es könnte sein. Gibt es einen Weg, den ich bestätige? Wie gesagt, ich kann mich über ein Browserfenster verbinden. –

Antwort

0

Ich habe Ihren Code ausprobiert und es funktioniert gut auf meine Mietvertrag. Ich habe das nugget-Paket "Microsoft.SharePointOnline.CSOM" installiert. Vielleicht versuchen:

uninstall-package "Microsoft.SharePointOnline.CSOM" 
install-package "Microsoft.SharePointOnline.CSOM" 

Versuchen Sie auch, dies in einer neuen Konsole App ausführen. Abhängig von Ihrer app.config gibt es vielleicht Einstellungen rund um Proxies etc.

Wenn das nicht hilft, können Sie auch fiddler versuchen, die Anrufe zu sehen.

BEARBEITEN: Versuchen Sie auch, die E-Mail-Adresse des externen Benutzers als Login-Name zu verwenden.

+0

Haben Sie es mit einem externen Benutzer versucht? Ein Benutzer, der nicht in Ihrer Domain ist. Ich kann mich auch mit einem internen Benutzer verbinden. –

Verwandte Themen