2013-03-29 31 views
1

我有这样的代码列出在SharePoint门户网站的所有用户:如何列出SharePoint门户上的所有登录用户?

使用(Microsoft.SharePoint.SPSite mSite =新 Microsoft.SharePoint.SPSite(GetCurrentSiteURL())){

 Microsoft.SharePoint.SPWeb rootWeb = mSite.RootWeb; 
     for (int i = 0; i < rootWeb.AllUsers.Count; i++) 
     { 
      int j = 0; 
      char[] anyOf = new char[] { '#', '+' }; 
      rootWeb.AllUsers[i]. 

      if (rootWeb.AllUsers[i].LoginName.IndexOfAny(new char[] { '#', '+' }) == -1)//if(!rootWeb.AllUsers[i].IsDomainGroup) 

      { 
       box1.Items.Insert(j, rootWeb.AllUsers[i].LoginName); 
       j += 1; 
      } 
     } 

是否可以仅列出当前登录的用户?

回答

2

SharePoint没有提供任何方法来确定当前登录的用户。这是由于SharePoint使用HTTP来传输数据。由于HTTP是一种无状态协议,因此您不知道用户目前是否在线,即使他/她几秒前刚从SiteCollection请求了一个站点。
如果您想要实现这样的目标,您需要创建一个WebPart,它可以跟踪登录用户并将其安装到服务器场(如果您可以将Farm-Solution部署到服务器的GAC)。这完全不适用于SandBoxed-Solutions,因为受限制的权限和API。
此外,AllUsers - 属性RootWeb显示所有注册用户,但您无法获得有关其在线状态的任何信息。

+0

感谢Bash。你给了我一个尝试的指针。 – val

+0

不客气!你不会相信我花了多少小时来解决这个问题...... –

+0

我真的很感谢你的帮助。我昨天和今天的整个一天都没有分享。再次感谢。 – val