使用SharePointServer2007實(shí)現(xiàn)項(xiàng)目級審核.doc_第1頁
使用SharePointServer2007實(shí)現(xiàn)項(xiàng)目級審核.doc_第2頁
使用SharePointServer2007實(shí)現(xiàn)項(xiàng)目級審核.doc_第3頁
使用SharePointServer2007實(shí)現(xiàn)項(xiàng)目級審核.doc_第4頁
使用SharePointServer2007實(shí)現(xiàn)項(xiàng)目級審核.doc_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

使用 SharePoint Server 2007 實(shí)現(xiàn)項(xiàng)目級審核發(fā)布日期: 2007-05-16 | 更新日期: 2007-05-16摘要:了解內(nèi)置于 Microsoft Windows SharePoint Services 3.0 和 Microsoft Office SharePoint Server 2007 中的審核支持,以及如何使用自定義的項(xiàng)目級審核解決方案擴(kuò)展此支持。Ted Pattison, Ted Pattison GroupJoanna Bichsel, Microsoft Corporation適用于:2007 Microsoft Office 系統(tǒng)、Microsoft Office SharePoint Server 2007、Microsoft Windows SharePoint Services 3.0。下載 MOSSSampleItemLevelAuditing.exe本頁內(nèi)容使用 SharePoint Server 2007 實(shí)現(xiàn)審核Windows SharePoint Services 和 Office SharePoint Server 2007 中內(nèi)置的審核支持項(xiàng)目級審核:自定義的審核解決方案顯示審核日志中的條目項(xiàng)目級審核編寫自定義審核條目Office SharePoint Server 2007 對審核的增值支持Office SharePoint Server 2007 對審核報(bào)告的支持生成包含審核日志信息的 Excel 工作簿使用 Excel Services 實(shí)現(xiàn)服務(wù)器端工作簿呈現(xiàn)打包項(xiàng)目審核解決方案以便進(jìn)行部署結(jié)束語其他資源使用 SharePoint Server 2007 實(shí)現(xiàn)審核許多公司和政府機(jī)構(gòu)都有一些政策和法規(guī),要求公司和政府機(jī)構(gòu)仔細(xì)跟蹤用戶在何處以及采用何種方式訪問重要記錄和文檔。特別是,這些公司和機(jī)構(gòu)還需要維護(hù)審核日志,這些審核日志詳細(xì)記錄了跟蹤數(shù)據(jù)的事件(如哪些用戶查看和更新了記錄和文檔)以及這些事件發(fā)生的時(shí)間。先前的 Microsoft Windows SharePoint Services 2.0 不能提供廣泛的審核支持。例如,不能使用組件審核對頁面的訪問,也不能審核對列表中的項(xiàng)目的訪問。而且,僅當(dāng)庫中的某個(gè)文檔進(jìn)行了更新才會觸發(fā) Windows SharePoint Services 2.0 文檔庫中的事件處理程序。因此,Windows SharePoint Services 2.0 文檔庫中的事件處理程序不能審核用戶查看文檔時(shí)發(fā)生的事件。為適應(yīng)用戶的要求,最新版的 Microsoft SharePoint Products and Technologies 現(xiàn)在在審核支持方面提供了大量增強(qiáng)功能,所有這些增強(qiáng)功能都包含在 2007 Microsoft Office system 中。Microsoft Windows SharePoint Services 3.0 和 Microsoft Office SharePoint Server 2007 都提供了對用戶訪問頁面、內(nèi)容和文檔的審核支持,并且它們都包含了一些諸如查看和更新一類的可審核的事件。返回頁首Windows SharePoint Services 和 Office SharePoint Server 2007 中內(nèi)置的審核支持Windows SharePoint Services 3.0 引入了內(nèi)置的審核日志記錄,您可以在網(wǎng)站集范圍內(nèi)啟用和配置該功能。在您啟用審核功能時(shí),Windows SharePoint Services 會將審核事件條目寫入到存儲在內(nèi)容數(shù)據(jù)庫中的一個(gè)內(nèi)部審核日志表中。網(wǎng)站集的審核事件條目與所有其他的 Windows SharePoint Services 內(nèi)容(如列表項(xiàng)目、文檔和 Web 部件自定義內(nèi)容)存儲在一起。當(dāng)您備份一個(gè)網(wǎng)站集時(shí),會同時(shí)備份審核日志中的所有信息。雖然 Windows SharePoint Services 提供了基本的審核機(jī)制,但用戶不能直接啟用審核功能。因?yàn)?Windows SharePoint Services 沒有提供對寫入審核日志的條目進(jìn)行查看的功能,所以必須由開發(fā)人員編寫代碼才能啟用 Windows SharePoint Services 審核日志記錄功能。開發(fā)人員還必須提供代碼和用戶界面,以讀取審核日志中的條目和向網(wǎng)站用戶顯示這些數(shù)據(jù)。本文提供的示例代碼顯示了如何創(chuàng)建這種類型的自定義審核解決方案。雖然 Windows SharePoint Services 只提供基本審核機(jī)制,但 Office SharePoint Server 2007 通過提供一個(gè)允許在網(wǎng)站集級別進(jìn)行審核的管理用戶界面提高了價(jià)值。Office SharePoint Server 2007 在審核功能上更進(jìn)一步,它能夠在列表或文檔庫級別啟用審核,并能夠控制審核日志中應(yīng)記錄的事件類型。Office SharePoint Server 2007 還提供了一個(gè)報(bào)告功能,該功能使用 Microsoft Office Excel 工作簿顯示和保留審核日志的記錄。因此,Office SharePoint Server 2007 使您能夠利用 Windows SharePoint Services 的審核支持而不需要編寫任何自定義代碼。返回頁首項(xiàng)目級審核:自定義的審核解決方案本文還提供了一個(gè)名為“項(xiàng)目級審核”(MOSSSampleItemLevelAuditing.exe) 的自定義解決方案,該方案演示了一些在 Windows SharePoint Services 和 Office SharePoint Server 2007 中可使用的擴(kuò)展審核支持的技巧。首先,該自定義解決方案顯示了如何通過編程方式啟用審核日志記錄來擴(kuò)展 Windows SharePoint Services。它還提供了一個(gè)向 Windows SharePoint Services 網(wǎng)站用戶顯示審核日志內(nèi)容的用戶界面組件。該自定義解決方案還演示了如何使用新的 Office Open XML 格式生成包含審核信息的 Excel 工作簿,從而對報(bào)告功能提供更好的支持,以擴(kuò)展 Office SharePoint Server 2007。項(xiàng)目級審核解決方案還顯示了如何解決目前尚不能由 Windows SharePoint Services 或 Office SharePoint Server 2007 解決的問題。特別是,該自定義解決方案演示了如何顯示和報(bào)告與列表中單個(gè)條目或文檔庫中單個(gè)文檔相關(guān)聯(lián)的審核日志條目。此解決方案的所有示例代碼都包含在一個(gè)名為 ItemAuditing.csproj 的 Microsoft Visual Studio 2005 項(xiàng)目中。圖 1 顯示了組成該解決方案的各種文件。這些項(xiàng)目文件使用了 Windows SharePoint Services 3.0 中引入的許多新的開發(fā)技巧,如自定義應(yīng)用程序頁、功能和解決方案包。圖 1. ItemAuditing 項(xiàng)目在開始之前,請確保您的開發(fā)計(jì)算機(jī)已安裝下列程序:Microsoft .NET Framework 3.0(RTM 版本)Microsoft Visual Studio 2005Microsoft Windows SharePoint Services 3.0Microsoft Office SharePoint Server 2007接下來,下載 MOSSSampleItemLevelAuditing.exe 文件并將其內(nèi)容解壓到開發(fā)計(jì)算機(jī)的某個(gè)目錄中?,F(xiàn)在您就可以按照 Setup Document.docx 中的說明運(yùn)行該示例解決方案了。在完成安裝文檔中的操作之后,就會在您的計(jì)算機(jī)上生成一個(gè)完整的 Visual Studio 2005 項(xiàng)目。本文以下部分解釋了使此解決方案能夠發(fā)揮作用的各個(gè)組件。項(xiàng)目級審核解決方案由以下部分組成:一個(gè)名為 Item Auditing 的 Windows SharePoint Services 功能組件兩個(gè)名稱分別為 AuditLogViewer.aspx 和 ItemAudit.aspx 的應(yīng)用程序頁一個(gè)名為 AuditLogWorkbook.ashx 的自定義處理程序一個(gè)名為 ItemAuditing.dll 的程序集我們首先來查看一下 Item Auditing 功能組件及其 feature.xml 文件。Xml Windows SharePoint Services 3.0 功能組件始終安裝在服務(wù)器場級范圍內(nèi)。不過,您可以將功能組件的激活范圍設(shè)置為四種級別中的一種??梢栽诰W(wǎng)站范圍內(nèi)激活功能組件,也可以在網(wǎng)站集、Web 應(yīng)用程序或服務(wù)器場中激活它。在此,我們將 Item Auditing 功能組件設(shè)計(jì)成在網(wǎng)站集級別激活。您可以看一下前面講到的 Feature 元素,其 Scope 屬性設(shè)置為 Site,這意味著它是在網(wǎng)站集范圍內(nèi)激活。如果想創(chuàng)建一個(gè)在網(wǎng)站范圍而不是在網(wǎng)站集范圍內(nèi)激活的功能組件,可通過將 Scope 屬性的值指定為 Web 而不是 Site 來實(shí)現(xiàn)。在 Windows SharePoint Services 服務(wù)器場中安裝了 Item Auditing 功能組件之后,就可以在該服務(wù)器場中的任何網(wǎng)站集中將它激活。如果導(dǎo)航到“Site Collection Features”(網(wǎng)站集功能組件)管理頁,則您能夠激活功能組件,如圖 2 所示。圖 2. 網(wǎng)站集功能組件管理頁如果查看 feature.xml 文件中的 Feature 元素,您就會注意到它有 ReceiverAssembly 屬性和 ReceiverClass 屬性。這一技巧允許功能組件引用具有特定類的程序集,該類提供了一個(gè)隨功能組件激活而觸發(fā)的事件處理程序。此種特定于功能組件的事件處理是由一個(gè)授權(quán)的自定義類實(shí)現(xiàn)的,該自定義類從 SPFeatureReceiver 類繼承而來,如下面代碼中 ItemAuditingFeatureReceiver 類所示。C#using System;using Microsoft.SharePoint;namespace ItemAuditing public class ItemAuditingFeatureReceiver : SPFeatureReceiver public override void FeatureActivated(SPFeatureReceiverProperties properties) / 功能組件激活代碼轉(zhuǎn)到這里。 public override void FeatureInstalled(SPFeatureReceiverProperties properties) public override void FeatureUninstalling(SPFeatureReceiverProperties properties) public override void FeatureDeactivating(SPFeatureReceiverProperties properties) 為項(xiàng)目級審核解決方案創(chuàng)建的功能組件接收器類僅在 FeatureActivated 事件處理程序方法中提供了代碼。不過,在安裝功能組件時(shí),以及取消激活和卸載時(shí),也可以編寫其他三種方法來提供事件處理行為。在激活 Item Auditing 功能組件時(shí),其 FeatureActivated 事件處理程序方法將執(zhí)行打開 Windows SharePoint Services 審核功能所需的代碼。事件處理程序中的代碼通過獲取一個(gè)對當(dāng)前網(wǎng)站集的 SPSite 對象的引用來完成這一操作,然后在 SPSite 對象的 Audit 屬性上設(shè)置正確的審核標(biāo)志。C#public override void FeatureActivated(SPFeatureReceiverProperties properties) SPSite siteCollection = (SPSite)properties.Feature.Parent; / 啟用審核標(biāo)志。 siteCollection.Audit.AuditFlags = SPAuditMaskType.All; siteCollection.Audit.Update(); / 修改首要網(wǎng)站標(biāo)題。 SPWeb site = siteCollection.RootWeb; site.Title += (audited); site.Update(); SPListTemplate template = site.ListTemplatesDocument Library; Guid docLibID = site.Lists.Add(AuditLogs, Library for Audit Log Workbooks, template); SPList docLib = site.ListsdocLibID; docLib.OnQuickLaunch = true; docLib.Update();正如上面代碼所示,F(xiàn)eatureActivated 事件處理程序還更新了首要網(wǎng)站的標(biāo)題,以使您能夠直觀地看到它已成功運(yùn)行。此外,程序代碼還在首要網(wǎng)站創(chuàng)建名為 Audit Logs 的文檔庫。此文檔庫用作一個(gè)包含了審核日志記錄數(shù)據(jù)的 Office Excel 工作簿存儲庫。本文稍后還將提供更詳細(xì)的信息?,F(xiàn)在我們專門分析一下在網(wǎng)站集級別啟動日志記錄功能的代碼。Audit 屬性公開了一個(gè) SPAudit 對象,該對象提供了一個(gè) AuditFlags 屬性。AuditFlags 屬性基于 SPAuditMaskType 枚舉,并且只需指定一個(gè) All 值即可啟用所有的審核功能。另外需要注意,在修改 SPAudit 對象上的審核標(biāo)志之后,還要調(diào)用 Update 方法。C#siteCollection.Audit.AuditFlags = SPAuditMaskType.All;siteCollection.Audit.Update();上面您看到的是如何對整個(gè)網(wǎng)站集啟用審核功能。不過,您應(yīng)明白,對于具有巨大流量的大型網(wǎng)站集,這一功能可能是一項(xiàng)非常繁重的任務(wù)。例如,如果您的大型網(wǎng)站集上有許多活動用戶,或者,如果您在審核一些頻繁的操作(如頁面讀?。瑒t大量數(shù)據(jù)會非常迅速地填滿審核日志。在某些情況下,例如,當(dāng)為政府機(jī)構(gòu)中的分類文檔設(shè)計(jì)存儲庫時(shí),您可能想記錄每一項(xiàng)可審核的事件。這可能要求您在網(wǎng)站集級別啟用所有審核事件。您可能還要考慮將分類文檔劃分到它們自己的網(wǎng)站集中,這樣,當(dāng)用戶查看未分類的文檔時(shí),您就不必記錄同一級別的審核信息。此外,您可能想在單個(gè)網(wǎng)站集范圍內(nèi)對審核內(nèi)容有更靈活的控制。例如,您可能想只審核更新操作而不審核讀取操作。也許,您需要對同一網(wǎng)站內(nèi)某一文檔庫(而不是其他文檔庫)的訪問進(jìn)行審核。幸運(yùn)的是,在啟用審核方式上,Windows SharePoint Services 提供了更多的選擇余地。例如,您可以針對一個(gè)單獨(dú)的文檔庫啟用審核功能。C#SPSite siteCollection = new SPSite(http:/LitwareServer1);SPWeb site = siteCollection.OpenWeb();SPList list = site.ListsProposals;list.Audit.AuditFlags = SPAuditMaskType.All;list.Audit.Update();另外還要注意,在啟用審核功能時(shí),您不需要記錄所有類型的可審核事件。您可以使用審核標(biāo)志控制需要 Windows SharePoint Services 記錄的審核事件的類型。SPAuditMaskType 枚舉值就是一些按位標(biāo)志,您可以結(jié)合使用這些標(biāo)志配置想捕獲的審核事件集。C#list.Audit.AuditFlags = SPAuditMaskType.View | SPAuditMaskType.Update | SPAuditMaskType.Delete;list.Audit.Update();上面的代碼是一個(gè)可包含在審核日志中的事件類型子集的示例。下面列出了所有可用的不同枚舉值。C#SPAuditMaskType.CheckInSPAuditMaskType.CheckOutSPAuditMaskType.ChildDeleteSPAuditMaskType.CopySPAuditMaskType.DeleteSPAuditMaskType.MoveSPAuditMaskType.ProfileChangeSPAuditMaskType.SchemaChangeSPAuditMaskType.SearchSPAuditMaskType.SecurityChangeSPAuditMaskType.UndeleteSPAuditMaskType.UpdateSPAuditMaskType.ViewSPAuditMaskType.Workflow返回頁首顯示審核日志中的條目現(xiàn)在您已經(jīng)學(xué)會如何啟用審核日志記錄,接下來我們要重點(diǎn)討論如何將審核日志中的事件信息顯示給網(wǎng)站用戶。項(xiàng)目級審核解決方案提供了一個(gè)名為 AuditLogViewer.aspx 的應(yīng)用程序頁。它主要用于向網(wǎng)站管理員顯示網(wǎng)站集審核日志的全部內(nèi)容。該項(xiàng)目級解決方案還包含一個(gè)名為 elements.xml 的文件,該文件提供了兩個(gè) CustomAction Element(自定義操作)元素。CustomAction 元素用于向“網(wǎng)站操作”菜單添加菜單項(xiàng),這樣網(wǎng)站管理員就可以借助菜單定位到 AuditLogViewer.aspx 文件。Xml 此 CustomAction 元素是為添加如圖 3 所示的菜單項(xiàng)而設(shè)計(jì)的,該元素的定義中包含 RequiresSiteAdministrator 屬性,并賦予一個(gè) true 值。由于承載 Item Auditing 功能組件僅在網(wǎng)站集的范圍內(nèi)有效,因此只有擁有網(wǎng)站集的用戶才可以查看菜單項(xiàng)。您還會發(fā)現(xiàn),UrlAction 元素的 URL 屬性配置了一個(gè)包含“sitecollection”令牌的 URL。這就是說,Windows SharePoint Services 可以動態(tài)地分析 URL,將用戶重定向到基于當(dāng)前網(wǎng)站集根路徑的該應(yīng)用程序頁。圖 3. 自定義菜單項(xiàng)網(wǎng)站集所有者在單擊該菜單項(xiàng)以定位到“Audit Log Viewer”(審核日志查看器)頁面時(shí),會被重定向到 layouts 虛擬目錄下名為 AuditLogViewer.aspx 的自定義應(yīng)用程序頁。此自定義應(yīng)用程序頁會從網(wǎng)站集的審核日志中讀取所有事件信息,并使用 SPGridView 控件來顯示這些信息,如圖 4 所示。圖 4. 審核日志查看器頁面創(chuàng)建諸如 AuditLogViewer.aspx 的自定義應(yīng)用程序頁為向含有自定義代碼的 Windows SharePoint Services 解決方案添加用戶界面組件提供一個(gè)功能強(qiáng)大的武器。與網(wǎng)頁(例如,default.aspx)不同,自定義應(yīng)用程序頁要針對每個(gè)服務(wù)器場進(jìn)行部署,而且不能一個(gè)站點(diǎn)接一個(gè)站點(diǎn)地進(jìn)行自定義。由于應(yīng)用程序頁運(yùn)行于 virtual _layout 目錄之外,并被編譯成單獨(dú)的程序集 DLL 用于服務(wù)器場內(nèi)的所有網(wǎng)站,因此其性能要優(yōu)于網(wǎng)頁。應(yīng)用程序頁與網(wǎng)頁的不同之處還在于,您可以直接向它們添加代碼。通常,創(chuàng)建的自定義應(yīng)用程序頁會鏈接到 application.master,這是標(biāo)準(zhǔn) Windows SharePoint Services 應(yīng)用程序頁使用的主母版頁文件。通常,對于編寫應(yīng)用程序頁,應(yīng)該采取從 Microsoft.SharePoint 程序集內(nèi)定義的名為 LayoutsPageBase 的基類進(jìn)行繼承的方法。下面是諸如 AuditLogViewer.aspx 的自定義應(yīng)用程序頁的一個(gè)起始點(diǎn),并帶有基本布局。 protected override bool RequireSiteAdministrator get return true; protected override void OnLoad(EventArgs e) / 代碼轉(zhuǎn)到這里。 此頁內(nèi)的代碼重寫了 RequireSiteAdministrator 屬性,并返回一個(gè) true 值。這可以使您更加安全地鎖定應(yīng)用程序頁。以這種方式重寫 RequireSiteAdministrator 屬性后,您就可以得到一個(gè)安全性極高的環(huán)境。這樣,如果非網(wǎng)站管理員用戶嘗試定位到此應(yīng)用程序頁,Windows SharePoint Services 會將用戶重定向到常見的拒絕訪問頁面。AuditLogViewer.aspx 的定義在頂端包含一個(gè)腳本塊,其中的代碼可基于對象模型進(jìn)行編程。如果您在 Visual Studio 2005 中編寫這樣的頁面,由于可以使用顏色編碼和 IntelliSense,您會覺得非常便捷。但是,您必須確保添加到頁面頂端的 Assembly 指令是正確的。因此您需要使用 Microsoft.SharePoint 程序集的信息修改之前所示的 Assembly 指令。應(yīng)用程序頁之所以非常實(shí)用,是因?yàn)槿藗兛梢越柚鼈冚p松快捷地訪問 Windows SharePoint Services 對象。按照前述方法創(chuàng)建好應(yīng)用程序頁并提供一個(gè) OnLoad 方法的重寫實(shí)現(xiàn)后,您就可以使用下列代碼獲得特定于網(wǎng)站的上下文中 Windows SharePoint Services 對象模型的入口點(diǎn)。C#protected override void OnLoad(EventArgs e) SPSite siteCollection = SPContext.Current.Site; SPWeb site = SPContext.Current.Web;能夠獲得與網(wǎng)站有關(guān)的上下文,我們就能編寫出功能更為強(qiáng)大的應(yīng)用程序頁。根據(jù)網(wǎng)站訪問路徑的不同,應(yīng)用程序頁的行為也是有所區(qū)別的。通過一個(gè)網(wǎng)站的上下文導(dǎo)航到某個(gè)應(yīng)用程序頁,與通過另一個(gè)網(wǎng)站的上下文導(dǎo)航到該頁,該應(yīng)用程序頁的行為通常是不同的。接下來我們要討論 AuditLogViewer.aspx 中定義的 OnLoad 事件內(nèi)部的代碼。這些代碼是為讀取當(dāng)前網(wǎng)站集的審核日志而編寫的,首先創(chuàng)建一個(gè) SPAuditQuery 對象,然后通過一個(gè)調(diào)用將此對象作為參數(shù)傳給 GetEntries 方法。對 GetEntries 方法的調(diào)用會返回一個(gè) SPAuditEntryCollection 對象,有了該對象,我們就可以借助一個(gè)簡單的 foreach 循環(huán)來檢查目標(biāo)審核日志中的條目。C#SPSite siteCollection = SPContext.Current.Site;SPAuditQuery wssQuery = new SPAuditQuery(siteCollection);SPAuditEntryCollection auditCol = siteCollection.Audit.GetEntries(wssQuery);foreach (SPAuditEntry entry in auditCol) / 檢查條目在查看 AuditLogViewer.aspx 內(nèi) OnLoad 方法的整個(gè)實(shí)現(xiàn)時(shí),您會發(fā)現(xiàn),該方法是使用 SPGridView 控件來顯示審核事件信息的。這種方法可以確保審核條目的顯示效果與 Windows SharePoint Services 其他方面的外觀和風(fēng)格保持一致。要向 SPGridView 控件中填充審核條目,您需要?jiǎng)?chuàng)建一個(gè) Microsoft ADO.NET DataTable 對象,然后在其中寫入審核日志信息。采用這種創(chuàng)建并填充 DataTable 對象的方法能夠很便捷地將信息綁定到 SPGridView 控件。需要注意的是,Windows SharePoint Services 會按照通用協(xié)調(diào)時(shí)間(格林尼治標(biāo)準(zhǔn)時(shí)間)對審核事件的時(shí)間進(jìn)行跟蹤。示例應(yīng)用程序中的代碼在檢索時(shí)間后,會調(diào)用 Microsoft .NET Framework 的 DateTime 類提供的 ToLocalTime 方法,將通用協(xié)調(diào)時(shí)間轉(zhuǎn)換為 Web 服務(wù)器的本地時(shí)間。但在某些情況下,例如當(dāng)您的前端 Web 服務(wù)器和您的用戶位于不同時(shí)區(qū)時(shí),請注意該示例應(yīng)用程序并不支持將審核事件時(shí)間轉(zhuǎn)換為用戶的時(shí)區(qū)。在您檢查從 Windows SharePoint Services 審核日志中讀取信息的代碼實(shí)現(xiàn)時(shí),請仔細(xì)觀察代碼是如何檢索用戶名的。Windows SharePoint Services 審核日志跟蹤的是用戶的 ID,而并非用戶名。獲得用戶 ID 后,您可以使用 SiteUser 集合上的 GetByID 方法檢索到與之關(guān)聯(lián)的用戶名,這里的 SiteUser 集合被公開為首要網(wǎng)站的一個(gè)屬性。請確保您所使用的是 SiteUsers 集合,并且不要將其與 User 集合混淆,使用這兩個(gè)集合得出的結(jié)果是不同的。C#Private string GetUserNameById(int UserId, SPWeb site) return site.SiteUsers.GetByID(UserId).Name;有些用戶也許希望將部分審核日志導(dǎo)出到其他外部存儲(例如,數(shù)據(jù)庫或 Excel 電子表格)中。該示例應(yīng)用程序還提供了一個(gè)命令按鈕,借助它可以清空 Windows SharePoint Services 審核日志。要實(shí)現(xiàn)這一點(diǎn),需要調(diào)用目標(biāo) SPAudit 對象上的 DeleteEntries 方法并傳遞帶有時(shí)間和日期的參數(shù),而在此之前,您應(yīng)該清除所有已審核條目。在調(diào)用 DeleteEntries 方法前,您可以再編寫一些代碼,將審核數(shù)據(jù)安全地備份到選好的外部存儲中,以避免重要的審核事件數(shù)據(jù)丟失。我們建議您不要將此按鈕用作當(dāng)前實(shí)現(xiàn),除非您先向 OnClick 添加自定義邏輯,執(zhí)行導(dǎo)出操作,然后再執(zhí)行刪除操作。之所以未在這里添加該邏輯,是因?yàn)椴煌M織可能需要不同類型的備份方法。C#/ 在此處添加代碼,以將審核日志導(dǎo)出到外部存儲。SPSite siteCollection = SPContext.Current.Site;siteCollection.Audit.DeleteEntries(DateTime.Now.ToLocalTime().AddDays(1);siteCollection.Audit.Update();當(dāng)您在一個(gè)通信流量很大的大型網(wǎng)站集內(nèi)使用自定義的審核解決方案時(shí),應(yīng)先將審核日志保存為單獨(dú)的文件,然后再清除它,這一點(diǎn)是非常重要的。您可以經(jīng)常性地使用這種方法更有效地管理空間。返回頁首項(xiàng)目級審核現(xiàn)在,對于在 Windows SharePoint Services 中啟用審核功能并將審核事件信息顯示給用戶的代碼,您應(yīng)該有所了解了,我們還可以研究如何添加必要的支持,以便用戶可以逐個(gè)文檔、逐個(gè)項(xiàng)目地查看審核信息。首先,我們要在“Edit Control box”(ECB,編輯控件箱)菜單中為網(wǎng)站集內(nèi)的所有文檔創(chuàng)建一個(gè)自定義菜單項(xiàng),注意,網(wǎng)站集已經(jīng)激活了 Item Auditing 功能組件。其目的是使網(wǎng)站集內(nèi)每個(gè)文檔的 ECB 菜單都能夠提供如下所示的菜單項(xiàng)。圖 5. ECB 菜單中的自定義菜單項(xiàng)諸如圖 5 所示的自定義菜單項(xiàng)是通過向 Item Auditing 功能組件的 elements.xml 文件添加第二個(gè) CustomAction 元素來創(chuàng)建的。該 CustomAction 元素與之前所示的那個(gè)有所區(qū)別,因?yàn)樵?CustomAction 元素帶有一個(gè) Location 屬性,該屬性被賦予一個(gè) EditControlBlock 的值。此屬性值會指示 Windows SharePoint Services 向特定一組項(xiàng)目或文檔的 ECB 菜單中添加菜單項(xiàng)。該 CustomAction 元素使用一個(gè)帶有 List 值的 RegistrationType 屬性和一個(gè)帶有 101 值的 RegistrationID 屬性定義菜單項(xiàng)的目標(biāo)集,這里的 RegistrationID 屬性是標(biāo)準(zhǔn) Windows SharePoint Services 文檔庫的標(biāo)識符。請注意,本示例應(yīng)用程序僅針對文檔庫內(nèi)的文檔提供了項(xiàng)目級審核功能。但是,您也可以輕松對其進(jìn)行擴(kuò)展,以支持其他任何列表類型。Xml 另外,您還應(yīng)該觀察一下 UrlAction 元素內(nèi) URL 屬性的值。該 URL 屬性的配置如下。Xmlsite/_layouts/ItemAudit.aspx?ItemId=ItemId&ListId=ListId首先,請注意配置該 URL 是為了將用戶重定向到名為 ItemAudit.aspx 的第二個(gè)自定義應(yīng)用程序頁。同時(shí)還應(yīng)注意,在該 URL 中包含三個(gè)令牌,這三個(gè)令牌會在運(yùn)行時(shí)由 Windows SharePoint Services 動態(tài)替換。site 令牌將被替換為指向當(dāng)前網(wǎng)站的 URL。ListId 令牌將被替換為標(biāo)識當(dāng)前文檔庫的 GUID。ItemId 令牌將被替換為文檔的整型標(biāo)識符。后兩個(gè)令牌用于分析查詢字符串,使用 Windows SharePoint Services 對象模型通過 ItemAudit.aspx 應(yīng)用程序頁顯示對包含該字符串的目標(biāo)文檔和文檔庫進(jìn)行訪問的信息。在用戶從特定文檔的 ECB 菜單中選擇“View Audit History”(查看審核歷史記錄)菜單時(shí),用戶將被重定向到名為 ItemAudit.aspx 的自定義應(yīng)用程序頁。接下來,用戶會看到該文檔的視圖,該視圖詳細(xì)記錄了記入日志的已審核事件,如圖 6 所示。圖 6. 自定義 ItemAudit.aspx 頁在從用戶角度查看 ItemAudit.aspx 頁面之后,我們現(xiàn)在可以查看一下該頁面的代碼。該應(yīng)用程序頁的基本結(jié)構(gòu)與 AuditLogViewer.aspx 類似。但是,與 AuditLogViewer.aspx 不同的是,ItemAudit.aspx 并非僅供網(wǎng)站管理員使用。其他用戶也可以根據(jù)各自需求來查看該代碼。首先,我們來看一下用于從查詢字符串中提取文檔列表項(xiàng) ID 和文檔庫 GUID 的代碼。正如您在之前的代碼中所見到的那樣,這是通過使用涉及 ASP.NET Request 對象的 QueryString 屬性的標(biāo)準(zhǔn)編程技術(shù)來完成。C#SPSite siteCollection = SPContext.Current.Site;SPWeb site = SPContext.Current.Web;string ListId = Request.QueryStringListId;string ItemId = Request.QueryStringItemId;SPList list = site.Listsnew Guid(ListId); SPListItem item = list.Items.GetItemById(Convert.ToInt32(ItemId);txtListId.Text = ListId;txtItemTitle.Text = list.Title;txtItemId.Text = ItemId;txtItemTitle.Text = item.Title;該代碼表還表明,只需額外加入一小段涵蓋 Windows SharePoint Services 對象模型的代碼,您就可以創(chuàng)建 SPList 對象和 SPListItem 對象來針對文檔庫和目標(biāo)文檔進(jìn)行編程。在 ItemAudit.aspx 中有為查詢審核日志而編寫的代碼。該代碼不同于先前 AuditLogViewer.aspx 中顯示的代碼,因?yàn)樗徊樵兲囟ㄓ谀硢我晃臋n的審核事件。查詢通過先調(diào)用 SPAuditQuery 對象上的 RestrictToList 方法,然后調(diào)用 GetEntries 并傳遞與目標(biāo)文檔相關(guān)的 SPListItem 對象來實(shí)現(xiàn)。C#SPAuditQuery wssQuery = new SPAuditQuery(siteCollection);wssQuery.RestrictToListItem(item); SPAuditEntryCollection auditCol = site.Audit.GetEntries(wssQuery);foreach (SPAuditEntry entry in auditCol) / 從審核日志中獲取信息了解了如何查詢特定于單一文檔的事件的審核日志后,我們就可以解決 Item Auditing 功能組件中一個(gè)更為復(fù)雜的問題。ItemAudit.aspx 頁是為了向所有用戶(包括非網(wǎng)站管理員用戶)顯示審核信息而特意設(shè)計(jì)和應(yīng)用的頁面。但是,向所有用戶顯示審核信息時(shí)可能會存在問題,因?yàn)?Windows SharePoint Services 對象模型要求用戶對任何調(diào)用 GetEntries 方法來查詢審核日志的代碼都擁有管理員權(quán)限。如果用戶沒有網(wǎng)站管理員權(quán)限,則在該用戶身份下運(yùn)行的任何代碼都會因訪問遭拒錯(cuò)誤而失敗。大多數(shù)情況下,您可能希望阻止非網(wǎng)站管理員用戶查看網(wǎng)站集審核日志中的信息。這就是 Windows SharePoint Services 對象模型實(shí)施這種限制的原因。但是,Item Auditing 功能組件可幫助您突破該限制。在這種特殊情形下,我們可以向任何網(wǎng)站用戶顯示審核信息。因此,ItemAudit.aspx 中的代碼必須使用特殊的編程技術(shù)來提升其權(quán)限,然后才能從 Windows SharePoint Services 審核日志中讀取信息。編寫 ItemAudit.aspx 中的代碼是為了與 SPSecurity 類交互,以便調(diào)用名為 RunWithElevatedPrivileges 的靜態(tài)方法。該方法接受單一參數(shù),這屬于委托。如果您希望將該代碼編寫得簡明扼要,可以使用如下代碼示例中所示的匿名方法。C#SPSecurity.RunWithElevatedPrivileges( delegate() / 此處顯示的是要在提升權(quán)限的情況下運(yùn)行的代碼。 / 該代碼段在 SHAREPOINT/SYSTEM 帳戶下運(yùn)行。);使用該技術(shù)提升代碼權(quán)限后,您必須創(chuàng)建 SPSite 類和 SPWeb 類的新實(shí)例。您無法使用通過 Current 屬性提供的對象,因?yàn)橐言诋?dāng)前用戶的安全上下文中創(chuàng)建這些對象。以下代碼說明了如何使用已提升權(quán)限的安全上下文來創(chuàng)建新 SPSite 對象和新 SPWeb 對象。C#SPSite siteColl = SPContext.Current.Site;SPWeb site = SPContext.Current.Web;SPSecurity.RunWithElevatedPrivileges(delegate() using (SPSite ElevatedSiteCollection = new SPSite(siteColl.ID) using (SPWeb ElevatedSite = ElevatedSiteCollection.OpenWeb(site.ID) / 現(xiàn)在針對提升權(quán)限的 SPSite 對象和 SPWeb 對象運(yùn)行程序。 );前一段代碼還說明了如何在 Microsoft

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論