-1
我一直在试图从SP站点获取所有用户。我的代码工作是为了获取组名和组名,但是当我尝试访问组中的用户时遇到了异常。我在使用它之前初始化了所有组件,我认为这是CSOM地狱的经典案例。但即使经过很多改变,我仍然无法解决它。任何输入被理解..如何从共享点获取所有用户组中的网站。
异常详细信息:
Microsoft.SharePoint.Client.CollectionNotInitializedException被抓住 的HResult = -2146233079 消息=集合尚未被初始化。它没有被请求或者请求没有被执行。可能需要明确要求。 源= Microsoft.SharePoint.Client.Runtime 堆栈跟踪: 在Microsoft.SharePoint.Client.ClientObjectCollection`1.d__0.MoveNext() 在GetUsersInGroupCSOM.Program.Main(字串[] args) 的InnerException:
代码”
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using System.Security;
namespace GetUsersInGroupCSOM
{
class Program
{
static void Main(string[] args)
{
//Replace it with the url of your tenant or your site-collection
string SiteUrl = "The Website";
System.Uri oUri = new System.Uri(SiteUrl);
using (ClientContext oClientContext = new ClientContext(SiteUrl))
{
//Replace it with your user id for SharePoint Online
string UserName = XXXXXXX;
//Replace it with your password
string Password = XXXXXXXXXXXXXX;
//Create a SecureString object from password string, needed for SharePointOnlineCredentials class
//SecureString SecurePassword = GetSecureString(Password);
//Old Credential code
//oClientContext.Credentials = new SharePointOnlineCredentials(UserName, SecurePassword);
oClientContext.Credentials = new NetworkCredential(UserName, Password);
//Load the site-collection groups using CSOM
Console.WriteLine(oClientContext.Web.SiteGroups);
oClientContext.Load(oClientContext.Web.SiteGroups);
try
{
oClientContext.ExecuteQuery();
Console.WriteLine("Connected");
}
catch (Exception e)
{
Console.WriteLine("The error is \n" + e.Message);
Console.WriteLine("The source is \n" + e.Source);
Console.WriteLine("The Stack Trace is \n" + e.StackTrace);
}
GroupCollection oSiteCollectionGroups = oClientContext.Web.SiteGroups;
oClientContext.Load(oSiteCollectionGroups);
Console.WriteLine("List of groups in the site collection");
Console.WriteLine("-------------------------------------");
Console.WriteLine(oSiteCollectionGroups.AreItemsAvailable);
foreach (Group oGroup in oSiteCollectionGroups)
{
Console.WriteLine(oGroup.Title);
}
Console.WriteLine("<<<<<<<<<<===================|End of Groups|========================>>>>>>>");
//Load the users collection in the Group 1
Console.WriteLine(oSiteCollectionGroups[1].Users);
oClientContext.Load(oSiteCollectionGroups[1].Users);
try
{
oClientContext.ExecuteQuery();
Console.WriteLine("Got the users >-->");
}
catch (Exception e)
{
Console.WriteLine("The error is \n" + e.Message);
Console.WriteLine("The source is \n" + e.Source);
Console.WriteLine("The Stack Trace is \n" + e.StackTrace);
}
Console.WriteLine("List of users in the first group of site-collection");
Console.WriteLine("-------------------------------------------------------");
//Console.WriteLine(oSiteCollectionGroups[1].Users);
//Console.WriteLine(oSiteCollectionGroups[1].AllowMembersEditMembership);
//Console.WriteLine(oSiteCollectionGroups[1].CanCurrentUserViewMembership);
//Console.WriteLine(oSiteCollectionGroups[1].Context);
//Console.WriteLine(oSiteCollectionGroups[1].Description);
//Console.WriteLine(oSiteCollectionGroups[1].LoginName);
//Console.WriteLine(oSiteCollectionGroups[1].Title);
//Console.WriteLine(oSiteCollectionGroups[1].ToString());
for (int i = 1; i < oSiteCollectionGroups.Count; i++)
{
//Group oGroup = oClientContext.Web.SiteGroups.GetById(i);
oClientContext.Load(oSiteCollectionGroups[i].Users);
Console.WriteLine("Items Available =>"+oSiteCollectionGroups[i].Users.AreItemsAvailable);
Console.WriteLine(oSiteCollectionGroups[i].Description);
Console.WriteLine(oSiteCollectionGroups[i].LoginName);
Console.WriteLine(oSiteCollectionGroups[i].Title);
Console.WriteLine("Owner Title =>"+oSiteCollectionGroups[i].OwnerTitle);
oClientContext.Load(oSiteCollectionGroups[i].Users);
try
{
foreach (User oUser in oSiteCollectionGroups[i].Users)
{
Console.WriteLine(oUser.Title);
Console.WriteLine("n");
}
}
catch (Exception e)
{
Console.WriteLine("Exception Occured");
Console.WriteLine("The error is \n" + e.Message);
Console.WriteLine("The source is \n" + e.Source);
Console.WriteLine("The Stack Trace is \n" + e.StackTrace);
}
}
Console.WriteLine("<<<<<<<<<<===================|End of Memebers|========================>>>>>>>");
Console.ReadLine();
}
}
private static SecureString GetSecureString(String Password)
{
SecureString oSecurePassword = new SecureString();
foreach (Char c in Password.ToCharArray())
{
oSecurePassword.AppendChar(c);
}
return oSecurePassword;
}
}
}
为什么选择投票? – JackTapper