如何才能访问非管理员用户的审核日志?

时间:2011-03-01 17:58:51

标签: sharepoint-2010 web-parts

我正在为SharePoint 2010构建Web部件,并且当我执行以下代码时,我发现非管理员用户收到Access Denied错误消息(错误在最后一行引发):

SPAuditQuery wssQuery = new SPAuditQuery(web.Site);
wssQuery.RestrictToUser(web.CurrentUser.ID);
wssQuery.AddEventRestriction(SPAuditEventType.View);
wssQuery.RestrictToList(SPContext.Current.List);

SPAuditEntryCollection auditCol;
auditCol = web.Site.Audit.GetEntries(wssQuery);

如何让非管理员用户从Web部件访问此日志?因为我需要通过非管理员用户进行过滤,即使当时非管理员用户已登录。

1 个答案:

答案 0 :(得分:1)

.NET Reflector告诉我SPAuditEntryCollection GetEntries(SPAuditQuery query)方法在尝试检索数据之前执行以下检查:

if (!this.m_Web.CurrentUser.IsSiteAdmin)
{
    throw new UnauthorizedAccessException();
}

您可以考虑:

  1. 直接查询dbo.AuditData表(直接访问SharePoint数据库通常不鼓励,但您只能进行只读访问,因此不会导致任何问题),

  2. 创建自定义SharePoint Web服务 - 这应该很简单,因为它需要做的只是执行GetEntries方法并返回结果。