2008-11-17 38 views
4

我正在尋找一種方法來獲得有關SharePoint組上的任何更改的通知。首先,我可以通過將事件處理程序附加到某種組列表來實現這一點。但不幸的是,沒有代表SharePoint組的這樣的列表。如何獲得有關SharePoint組更改的通知。

我的第二次嘗試是將事件處理程序綁定到內容類型SharePointGroup,但這也不起作用。

那麼還有沒有其他選項可以通知SharePoint組上的事件?

編輯:

感謝您的答覆爲止。

我忘了提及我已經使用Google並閱讀了用戶信息列表。抱歉。

首先,我發現了一個論壇條目,他們將相對URL發佈到用戶信息列表(_catalogs/users/simple.aspx)。當我使用此鏈接查看列表時,它只包含用戶並且不包含任何組。我不知道,但也許這個鏈接在列表上做了一些過濾。

我在幾篇博客和論壇帖子中發現的其他信息是,附加到用戶信息列表的事件處理程序不會觸發事件。我不得不承認,在閱讀之後,它不會工作那麼多次,甚至在MSDN上(http://msdn.microsoft.com/en-us/library/aa979520.aspx),我都沒有嘗試過。

將事件處理程序附加到內容類型的問題不是附加的事情,當我例如更改組名稱或從組中刪除用戶時,處理程序不會被解僱。我不知道爲什麼處理程序沒有被調用,我很確定我實現了正確的方法並將它們附加到正確的事件中。

其他任何建議如何獲得有關SharePoint組更改的信息?

+0

嗨,我問錯誤http://stackoverflow.com同樣的問題/問題/ 4132305 /用戶添加刪除的事件,在SharePoint的/ 4141634 – Gaby 2010-11-10 07:29:37

回答

1

你是什麼意思,沒有這樣的SharePoint組列表?您擁有用戶和SharePoint組駐留的用戶信息列表。您可以在那裏附加事件接收器並過濾項目。例如,您可以過濾SharePoint組的內容類型標識,即0x010b。

另外,應該可以將事件接收器附加到SharePoint組。什麼沒有用?

.B

2

這實在是煩人,添加或從組中刪除不需要的事件處理程序的最好的解決辦法我一直在使用谷歌找到了!是打開審計。

然後週期性地循環審覈來激發我的事件。

  wssQuery = new SPAuditQuery(site); 
      wssQuery.AddEventRestriction(SPAuditEventType.SecGroupMemberAdd); 
      wssQuery.AddEventRestriction(SPAuditEventType.SecGroupMemberDel); 
      wssQuery.SetRangeStart(startTime.AddMinutes(-16)); 
      auditCol = site.Audit.GetEntries(wssQuery); 




      foreach (SPAuditEntry entry in auditCol) 
      { 
        xml.LoadXml("<event>" + entry.EventData + "</event>"); 

        int userId = Int32.Parse(xml.SelectSingleNode("/event/user").InnerText); 
        int groupId = Int32.Parse(xml.SelectSingleNode("/event/groupid").InnerText); 

        if (entry.Event == SPAuditEventType.SecGroupMemberAdd) 
        { 
         // Do Stuff 
        } 

        if (entry.Event == SPAuditEventType.SecGroupMemberDel) 
        { 
         // Do Stuff 
        } 


      } 

它確實導致被添加到組和事件雖然燒成部件之間的嚴重延遲!

我找不到對審計的事件處理程序要麼所以唯一的選擇似乎是循環通過。

這對我來說很貴,因爲我們有數百個網站集合!

相關問題