我正在尝试为sharepoint创建替换Alert Me通知功能。
我完成了大部分的艰苦工作。我只需要知道在时间跨度内获得更改的最佳方法。
我知道SPChange类和list.GetChanges()方法。然而,我可以从中获得的唯一信息是“更新”/“重命名”等所做的事情。
我想要更具体的信息,例如创建/更新/删除的内容以及由谁等等。这应该用SPAudit类来完成吗?或者我错过了其他什么?
答案 0 :(得分:1)
我建议在这里查看我的问题:How to create a daily summary alert for any change in a SharePoint site。
我遵循Mark的建议,使用SPAudit框架进行了一些调整。我最终在附加到列表的事件接收器中添加了我自己的一些自定义SPAudit条目。然后,每晚一个控制台应用程序运行并读取当天的所有审核条目以发送警报。
听起来您可能只需要一个列表的警报,因此您必须进行更多过滤。另请注意,如果您想了解的不仅仅是基本信息(例如:哪些字段已更改),那么您需要查看创建自己的自定义SPAudit条目。
<强> *编辑*
对于自定义审计条目,我首先创建了一个可序列化的bean。然后,您可以将包含事件接收器中所有信息的bean序列化为SPAudit条目:
public static void AddEvent(MyCustomBeanClass e, SPSite site)
{
StringWriter sw = new StringWriter();
XmlSerializer xs = new XmlSerializer(typeof(MyCustomBeanClass));
xs.Serialize(sw, e);
site.Audit.WriteAuditEvent(SPAuditEventType.Custom, "MyCustomAuditing", sw.ToString());
}
此外,我认为this post of mine将帮助您想象(1)条目开箱即用的内容以及(2)您需要做的一些额外处理(例如:确定某个项目是否为创建)。