C# 如何从站点中的共享点组获取所有用户。?

C# 如何从站点中的共享点组获取所有用户。?,c#,exception,sharepoint,csom,C#,Exception,Sharepoint,Csom,我一直在尝试从SP站点获取所有用户。我有用于获取组和组名的代码,但是当我尝试从组访问用户时,遇到了一个异常。我在使用它之前初始化了所有组件,我认为这是CSOM地狱的经典案例。但即使经过了很多改变,我还是无法解决它。欢迎您的任何意见 异常详细信息: 捕获到Microsoft.SharePoint.Client.CollectionNotInitializedException HResult=-2146233079 Message=集合尚未初始化。尚未请求或请求尚未执行。可能需要明确请求。 Sou

我一直在尝试从SP站点获取所有用户。我有用于获取组和组名的代码,但是当我尝试从组访问用户时,遇到了一个异常。我在使用它之前初始化了所有组件,我认为这是CSOM地狱的经典案例。但即使经过了很多改变,我还是无法解决它。欢迎您的任何意见

异常详细信息:

捕获到Microsoft.SharePoint.Client.CollectionNotInitializedException HResult=-2146233079 Message=集合尚未初始化。尚未请求或请求尚未执行。可能需要明确请求。 Source=Microsoft.SharePoint.Client.Runtime 堆栈跟踪: 在Microsoft.SharePoint.Client.ClientObject集合'1.d_u0.MoveNext()中 在GetUsersInGroupCSOM.Program.Main(字符串[]args)处 内部异常:

代码“

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
Net系统;
使用System.Threading.Tasks;
使用Microsoft.SharePoint.Client;
使用系统安全;
命名空间GetUsersInGroupCSOM
{
班级计划
{
静态void Main(字符串[]参数)
{
//将其替换为租户或网站集的url
string SiteUrl=“网站”;
System.Uri oUri=新的System.Uri(SiteUrl);
使用(ClientContext-oClientContext=newclientcontext(SiteUrl))
{
//将其替换为SharePoint Online的用户id
字符串用户名=XXXXXXX;
//将其替换为您的密码
字符串密码=xxxxxxxxx;
//根据SharePointOnlineCredentials类所需的密码字符串创建SecureString对象
//SecureString SecurePassword=GetSecureString(密码);
//旧凭证代码
//oClientContext.Credentials=新的SharePointOnlineCredentials(用户名、安全密码);
oClientContext.Credentials=新的网络凭据(用户名、密码);
//使用CSOM加载网站集组
WriteLine(oClientContext.Web.SiteGroups);
加载(oClientContext.Web.SiteGroups);
尝试
{
oClientContext.ExecuteQuery();
控制台。写入线(“连接”);
}
捕获(例外e)
{
Console.WriteLine(“错误为\n”+e.Message);
Console.WriteLine(“源是\n”+e.source);
Console.WriteLine(“堆栈跟踪是\n”+e.StackTrace);
}
GroupCollection-PositeCollectionGroups=oClientContext.Web.SiteGroups;
oClientContext.Load(positeCollectionGroups);
Console.WriteLine(“网站集中的组列表”);
Console.WriteLine(“---------------------------------------”;
Console.WriteLine(oSiteCollectionGroups.AreItemsAvailable);
foreach(oSiteCollectionGroups中的组oGroup)
{
Console.WriteLine(oGroup.Title);
}
Console.WriteLine(“+oSiteCollectionGroups[i].Users.AreItemsAvailable”);
Console.WriteLine(oSiteCollectionGroups[i].Description);
Console.WriteLine(oSiteCollectionGroups[i].LoginName);
Console.WriteLine(oSiteCollectionGroups[i].Title);
Console.WriteLine(“所有者标题=>”+oSiteCollectionGroups[i].ownertite);
加载(oSiteCollectionGroups[i].Users);
尝试
{
foreach(oSiteCollectionGroups[i]中的用户oUser]。用户)
{
控制台写入线(USER.Title);
控制台。写入线(“n”);
}
}
捕获(例外e)
{
Console.WriteLine(“发生异常”);
Console.WriteLine(“错误为\n”+e.Message);
Console.WriteLine(“源是\n”+e.source);
Console.WriteLine(“堆栈跟踪是\n”+e.StackTrace);
}
}

WriteLine(您必须在CSOM中加载属性

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;
            oClientContext.Credentials = new NetworkCredential(UserName, Password);
            Console.WriteLine(oClientContext.Web.SiteGroups);
            oClientContext.Load(oClientContext.Web, w => w.SiteGroups.Include(o => o.Users.Include(l => l.LoginName), o => o.Title, o => o.Description, o => o.OwnerTitle));
            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;              
            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|========================>>>>>>>");                
            Console.WriteLine("List of users in the first group of site-collection");
            Console.WriteLine("-------------------------------------------------------");              

            for (int i = 1; i < oSiteCollectionGroups.Count; i++)
            {
                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);                    
                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();

        }
string SiteUrl=“网站”;
System.Uri oUri=新的System.Uri(SiteUrl);
使用(ClientContext-oClientContext=newclientcontext(SiteUrl))
{
//将其替换为SharePoint Online的用户id
字符串用户名=XXXXXXX;
//将其替换为您的密码
字符串密码=xxxxxxxxx;
oClientContext.Credentials=新的网络凭据(用户名、密码);
WriteLine(oClientContext.Web.SiteGroups);
加载(oClientContext.Web,w=>w.SiteGroups.Include(o=>o.Users.Include(l=>l.LoginName),o=>o.Title,o=>o.Description,o=>o.OwnerTitle));
尝试
{
oClientContext.ExecuteQuery();
控制台。写入线(“连接”);
}
捕获(例外e)
{
Console.WriteLine(“错误为\n”+e.Message);
Console.WriteLine(“源是\n”+e.source);
Console.WriteLine(“堆栈跟踪是\n”+e.StackTrace);
}
GroupCollection-PositeCollectionGroups=oClientContext.Web.SiteGroups;
Console.WriteLine(“网站集中的组列表”);
Console.WriteLine(“---------------------------------------”;
控制台写入线(oSiteCollec)
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;
            oClientContext.Credentials = new NetworkCredential(UserName, Password);
            Console.WriteLine(oClientContext.Web.SiteGroups);
            oClientContext.Load(oClientContext.Web, w => w.SiteGroups.Include(o => o.Users.Include(l => l.LoginName), o => o.Title, o => o.Description, o => o.OwnerTitle));
            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;              
            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|========================>>>>>>>");                
            Console.WriteLine("List of users in the first group of site-collection");
            Console.WriteLine("-------------------------------------------------------");              

            for (int i = 1; i < oSiteCollectionGroups.Count; i++)
            {
                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);                    
                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();

        }