如何获得有关SharePoint组更改的通知。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得有关SharePoint组更改的通知。相关的知识,希望对你有一定的参考价值。
我实际上正在寻找一种方法来获得有关SharePoint组的任何更改的通知。首先,我可以通过将事件处理程序附加到某种组列表来实现此目的。但遗憾的是,没有此类列表代表SharePoint组。
我的第二次尝试是将事件处理程序绑定到内容类型SharePointGroup,但这也不起作用。
那么有没有其他选项可以获得有关SharePoint组事件的通知?
编辑:
感谢到目前为止的回复。
我忘了提到我已经用Google搜索并阅读了有关用户信息列表的内容。抱歉。
首先,我找到了一个论坛条目,他们将相对URL发布到用户信息列表(_catalogs / users / simple.aspx)。当我使用此链接查看列表时,它只包含用户而不包含组。我不知道,但也许这个链接在列表上做了一些过滤。
我在几篇博客和论坛帖子中发现的其他信息是附加到用户信息列表的事件处理程序不会在事件上触发。我不得不承认,在阅读它不能工作这么多次甚至在MSDN(http://msdn.microsoft.com/en-us/library/aa979520.aspx)上,我没有自己尝试。
将事件处理程序附加到内容类型的问题不是附加的事情,当我例如更改组名或从组中删除用户时,处理程序根本没有被触发。我不知道为什么处理程序没有被调用我很确定我实现了正确的方法并将它们附加到正确的事件。
有关如何了解SharePoint组更改的任何其他建议吗?
从组中添加或删除没有事件处理程序是我发现使用Google的最佳工作真的很烦人!是开启审计。
然后定期循环审核以解雇我的事件。
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
}
}
它确实导致添加到组的成员和事件发生之间的严重延迟!
我无法在审计中找到事件处理程序,因此唯一的选择似乎是循环。
这对我来说很昂贵,因为我们有数百个网站集!
你是说什么没有这样的SharePoint组列表?您具有用户和SharePoint组所在的用户信息列表。您可以在那里附加事件接收器并过滤项目。例如,您可以筛选SharePoint组的内容类型ID,即0x010b。
此外,应该可以将事件接收器附加到SharePoint组。什么不起作用?
.B
不幸的是,“列表事件不会在”用户信息“列表类型上引发。请参阅:qazxsw poi或在此讨论:qazxsw poi
但是,对于SP 2013,有一个解决方案:http://msdn.microsoft.com/en-us/library/aa979520.aspx
以上是关于如何获得有关SharePoint组更改的通知。的主要内容,如果未能解决你的问题,请参考以下文章