2011-03-01 30 views
0

我建立一個Web部件爲SharePoint 2010,我已經發現,非管理員用戶越來越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

你有沒有嘗試把你的代碼放入RunWithElevatedPreviledges? – 2011-03-02 06:28:40

+0

不,沒有事先做任何事情......你認爲它可能有用嗎? – 2011-03-02 15:09:49

+0

嗯,這個問題原來是這個問題的最佳解決方案,如果您願意,請自己將其作爲解決方案發布。 – 2011-03-04 13:33:57

回答

1

.net反射告訴我,SPAuditEntryCollection GetEntries(SPAuditQuery query)方法之前,嘗試檢索數據進行以下檢查:

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

你可以考慮:

  1. 直接查詢dbo.AuditData表(訪問通常不鼓勵SharePoint數據庫,但您將只讀訪問,所以它不應該導致任何問題),

  2. 創建自定義SharePoint Web服務 - 這應該很簡單,因爲它只需執行GetEntries方法並返回結果。

+0

這聽起來很合理......我會盡力找到一個更好的解決方案,但同時我想我會嘗試這兩種方法之一。謝謝。 – 2011-03-02 15:10:44

相關問題