2008-11-17 49 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 
        } 


      } 

它确实导致被添加到组和事件虽然烧成部件之间的严重延迟!

我找不到对审计的事件处理程序要么所以唯一的选择似乎是循环通过。

这对我来说很贵,因为我们有数百个网站集合!