none
如何获取Sharepoint站点里面的所有可用用户 RRS feed

  • 问题

  •  using ( SPSite site = new SPSite(“http://mossServer”))
     using (SPWeb web = site.RootWeb){

                 SPUserCollection users1 = web.AllUsers;
                 SPUserCollection users2 = web.SiteUsers;
                 SPUserCollection users3 = web.Users;

                 SPList list = web.Lists["User Information List"];

                 foreach (SPListItem item in list.Items)
                 {
                          if (!item["ContentType"].ToString().Equals("Person")) continue;

                              string userName =  item["Title"] ;

    //                          .... some code ....

                  }

    }

     

    请问上面几种方式, 哪一种是获取站点写明所有的用户(包括一些Group里面的用户)!

    谢谢!


    Anything Is Possible !
    2010年11月5日 9:15

答案

  • 你好,

    不好意思,前面说法太不清楚了。

    这里的alluser文档里说的很清楚了,它是这个site的成员和被授权访问过这个站点的授权用户的集合。

    所以相比较而言,alluser包含范围最广。它最大的区别是如果一个用户不是该站点的成员,但是他是授权用户,访问了该站点,那么他也被包含在这个集合里。

    而如果你是指所有用户,包括AD里的,这个应该是在CA中可以看到的。通过在CA中的shared service administration中的user profile中的View User Profile可以看到所有用户。有个前提是你设置了其与AD保持同步,这个可以在Profile Import中进行设置。

    如果要使用代码查看,可以使用UserProfileManager 。

    e.g.

     static void GetUserProfiles(SPSite site)
        {      
          ServerContext sc = ServerContext.GetContext(site);
          UserProfileManager upm = new UserProfileManager(sc);
        }
    
    

     


    Microsoft Online Community Support
    • 已标记为答案 Jiang Hao 2010年11月12日 6:47
    2010年11月8日 7:57

全部回复

  • 你好,

    顾名思义,AllUser是指所有用户,包括group里面的,SiteUser是指整个Site范围的用户,而Users是指在web site中显示付给了权限的用户。

    详细可以参考下面的文档。

    AllUser:http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.spweb.allusers.aspx

    SiteUser:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.siteusers.aspx

    Users:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.users.aspx

     

     


    Microsoft Online Community Support
    2010年11月8日 2:31
  • 我之前也是用的Alluser ,但是我从 Site Actions ==》site settings ==>People and groups ==> all people , 通过对比 web.AllUsers 并不是 All people 的数据!



    Anything Is Possible !
    2010年11月8日 6:56
  • 你好,

    不好意思,前面说法太不清楚了。

    这里的alluser文档里说的很清楚了,它是这个site的成员和被授权访问过这个站点的授权用户的集合。

    所以相比较而言,alluser包含范围最广。它最大的区别是如果一个用户不是该站点的成员,但是他是授权用户,访问了该站点,那么他也被包含在这个集合里。

    而如果你是指所有用户,包括AD里的,这个应该是在CA中可以看到的。通过在CA中的shared service administration中的user profile中的View User Profile可以看到所有用户。有个前提是你设置了其与AD保持同步,这个可以在Profile Import中进行设置。

    如果要使用代码查看,可以使用UserProfileManager 。

    e.g.

     static void GetUserProfiles(SPSite site)
        {      
          ServerContext sc = ServerContext.GetContext(site);
          UserProfileManager upm = new UserProfileManager(sc);
        }
    
    

     


    Microsoft Online Community Support
    • 已标记为答案 Jiang Hao 2010年11月12日 6:47
    2010年11月8日 7:57
  • 好的,谢谢!
    Anything Is Possible !
    2010年11月12日 6:48