2013-03-29 49 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