⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auditlogviewer.aspx

📁 这是一个在SHAREPOINT上开发的一个审核日记的源代码
💻 ASPX
字号:
<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Assembly Name="ItemAuditing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7fd3ed697555604d" %>

<%@ Page Language="C#" MasterPageFile="~/_layouts/application.master" Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase" %>

<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="ItemAuditing" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
    Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<script runat="server">
    
    protected override bool RequireSiteAdministrator
    {
        get { return true; }
    }

    protected override void OnLoad(EventArgs e)
    {

        SPSite siteColl = SPContext.Current.Site;
        SPWeb site = SPContext.Current.Web;

        SPAuditQuery wssQuery = new SPAuditQuery(siteColl);
        SPAuditEntryCollection auditCol = siteColl.Audit.GetEntries(wssQuery);
        
        
    SPSite siteColl = SPContext.Current.Site;
    SPWeb site = SPContext.Current.Web;

    SPAuditQuery wssQuery = new SPAuditQuery(siteColl);
    SPAuditEntryCollection auditCol = siteColl.Audit.GetEntries(wssQuery);

    DataTable table = new DataTable();
    table.Columns.Add("User", typeof(string));
    table.Columns.Add("DocLocation", typeof(string));
    table.Columns.Add("ItemType", typeof(string));
    table.Columns.Add("ItemId", typeof(string));
    table.Columns.Add("Occurred", typeof(DateTime));
    table.Columns.Add("Event", typeof(string));

    DataRow newRow;

    foreach (SPAuditEntry entry in auditCol) {
      newRow = table.Rows.Add();
      newRow["User"] = GetUserNameById(entry.UserId, site);
      newRow["DocLocation"] = entry.DocLocation;
      newRow["ItemType"] = entry.ItemType.ToString();
      newRow["ItemId"] = entry.ItemId.ToString();
      newRow["Occurred"] = entry.Occurred.ToLocalTime();
      newRow["Event"] = ConvertEventToLocal(entry.Event);
    }

    SPBoundField boundField = new SPBoundField();
    boundField.HeaderText = "用户";
    boundField.DataField = "User";
    SPGridView1.Columns.Add(boundField);

    boundField = new SPBoundField();
    boundField.HeaderText = "文档位置";
    boundField.DataField = "DocLocation";
    SPGridView1.Columns.Add(boundField);

    boundField = new SPBoundField();
    boundField.HeaderText = "项目类型";
    boundField.DataField = "ItemType";
    SPGridView1.Columns.Add(boundField);

    boundField = new SPBoundField();
    boundField.HeaderText = "项目编号";
    boundField.DataField = "ItemId";
    SPGridView1.Columns.Add(boundField);

    boundField = new SPBoundField();
    boundField.HeaderText = "发生时间";
    boundField.DataField = "Occurred";
    boundField.ControlStyle.Width = new Unit(120);
    SPGridView1.Columns.Add(boundField);

    boundField = new SPBoundField();
    boundField.HeaderText = "事件";
    boundField.DataField = "Event";
    SPGridView1.Columns.Add(boundField);

    SPGridView1.AutoGenerateColumns = false;
    SPGridView1.DataSource = table.DefaultView;
    SPGridView1.DataBind();

    SPGridView1.AllowSorting = true;
    SPGridView1.HeaderStyle.Font.Bold = true;

        
        //DataTable table = new DataTable();
        //table.Columns.Add("用户", typeof(string));
        //table.Columns.Add("文档位置", typeof(string));
        //table.Columns.Add("项目类型", typeof(string));
        //table.Columns.Add("项目编号", typeof(string));
        //table.Columns.Add("发生时间", typeof(DateTime));
        //table.Columns.Add("事件", typeof(string));

        //DataRow newRow;

        //foreach (SPAuditEntry entry in auditCol)
        //{
        //    newRow = table.Rows.Add();
        //    newRow["用户"] = GetUserNameById(entry.UserId, site);
        //    newRow["文档位置"] = entry.DocLocation;
        //    newRow["项目类型"] = entry.ItemType.ToString();
        //    newRow["项目编号"] = entry.ItemId.ToString();
        //    newRow["发生时间"] = entry.Occurred.ToLocalTime();
        //    newRow["事件"] = ConvertEventToLocal(entry.Event);
        //}

        //SPBoundField boundField = new SPBoundField();
        //boundField.HeaderText = "用户";
        //boundField.DataField = "用户";
        //SPGridView1.Columns.Add(boundField);

        //boundField = new SPBoundField();
        //boundField.HeaderText = "文档位置";
        //boundField.DataField = "文档位置";
        //SPGridView1.Columns.Add(boundField);

        //boundField = new SPBoundField();
        //boundField.HeaderText = "项目类型";
        //boundField.DataField = "项目类型";
        //SPGridView1.Columns.Add(boundField);

        //boundField = new SPBoundField();
        //boundField.HeaderText = "项目编号";
        //boundField.DataField = "项目编号";
        //SPGridView1.Columns.Add(boundField);

        //boundField = new SPBoundField();
        //boundField.HeaderText = "发生时间";
        //boundField.DataField = "发生时间";
        //boundField.ControlStyle.Width = new Unit(120);
        //SPGridView1.Columns.Add(boundField);

        //boundField = new SPBoundField();
        //boundField.HeaderText = "事件";
        //boundField.DataField = "事件";
        //SPGridView1.Columns.Add(boundField);

        //SPGridView1.AutoGenerateColumns = false;
        //SPGridView1.DataSource = table.DefaultView;
        //SPGridView1.DataBind();

        //SPGridView1.AllowSorting = true;
        //SPGridView1.HeaderStyle.Font.Bold = true;
    }

    string GetUserNameById(int UserId, SPWeb site)
    {
        try
        {
            return site.SiteUsers.GetByID(UserId).Name;
            //return site.Users.GetByID(UserId).Name; - YOU CANNOT USE SPWeb.Users collection here
        }
        catch
        {
            return UserId.ToString();
        }
    }

    protected String ConvertEventToLocal(SPAuditEventType Event)
    {
        string operate = String.Empty;
        switch (Event)
        {
            case SPAuditEventType.AuditMaskChange:	//A change in the types of events that are audited for the object. 
                operate = "更改事件类型[审核]";
                break;
            case SPAuditEventType.CheckIn:	//Check-in of the object.
                operate = "签入";
                break;
            case SPAuditEventType.CheckOut:	//Check-out of the object. 
                operate = "签出";
                break;
            case SPAuditEventType.ChildDelete:	//Deletion of one of the child objects of the object. 
                operate = "子项目删除";
                break;
            case SPAuditEventType.ChildMove:	//Move of one of the child objects of the object. 
                operate = "子项目移动";
                break;
            case SPAuditEventType.Copy:	//Copying of the object. 
                operate = "复制";
                break;
            case SPAuditEventType.Custom:	//Custom action or event. 
                operate = "自定义";
                break;
            case SPAuditEventType.Delete:	//Deletion of the object. 
                operate = "删除";
                break;
            case SPAuditEventType.EventsDeleted:	//Deletion of audited events that are connected with the object from the SharePoint database. 
                operate = "删除事件[审核]";
                break;
            case SPAuditEventType.Move:	//Move of the object. 
                operate = "移动";
                break;
            case SPAuditEventType.ProfileChange:	//Change in a profile that is associated with the object. 
                operate = "个性化更改";
                break;
            case SPAuditEventType.SchemaChange:	//Change in the schema of the object. 
                operate = "架构更改";
                break;
            case SPAuditEventType.Search:	//Search on the object. 
                operate = "搜索";
                break;
            case SPAuditEventType.SecGroupCreate:	//Creation of a user group for a SharePoint site collection.  
                operate = "用户组创建[网站集]";
                break;
            case SPAuditEventType.SecGroupDelete:	//Deletion of a group that is associated with a SharePoint site collection.
                operate = "用户组删除[网站集]";
                break;
            case SPAuditEventType.SecGroupMemberAdd:	//Addition of a new member to a group that is associated with a SharePoint site collection. 
                operate = "添加用户[网站集]";
                break;
            case SPAuditEventType.SecGroupMemberDel:	//Deletion of a member from a group that is associated with a SharePoint site collection.
                operate = "删除用户[网站集]";
                break;
            case SPAuditEventType.SecRoleBindBreakInherit:	//Turning off inheritance of security settings from the parent of the object. 
                operate = "不从父级继承权限";
                break;
            case SPAuditEventType.SecRoleBindInherit:	//Turning on inheritance of security settings from the parent of the object. 
                operate = "从父级继承权限";
                break;
            case SPAuditEventType.SecRoleBindUpdate:	//Changing the permissions of a user or group for the object. 
                operate = "更改用户(组)权限";
                break;
            case SPAuditEventType.SecRoleDefBreakInherit:	//Turning off inheritance of role (that is, permission level) definitions from the parent of the object. 
                operate = "停止从父级继承权限级别";
                break;
            case SPAuditEventType.SecRoleDefCreate://Creation of a new role (that is, permission level) definition associated with the object. 
                operate = "添加权限级别";
                break;
            case SPAuditEventType.SecRoleDefDelete:	//Removal of a role (that is, permission level) definition associated with the object. 
                operate = "移除权限级别";
                break;
            case SPAuditEventType.SecRoleDefModify:	//Changing a role (that is, permission level) definition associated with an object. 
                operate = "更改权限级别";
                break;
            case SPAuditEventType.Undelete:	//Restoration of an object from the Recycle Bin. 
                operate = "从回收站还原";
                break;
            case SPAuditEventType.Update:	//Changing the properties of an object or creating an object. 
                operate = "更改";
                break;
            case SPAuditEventType.View:	//Viewing of the object by a user. 
                operate = "查看";
                break;
            case SPAuditEventType.Workflow:
                operate = "工作流";
                break;
            default:
                operate = "未知操作";
                break;
        }
        return operate;
    }


    protected void cmdDeleteAllEntires_Click(object sender, EventArgs e)
    {
        SPSite siteColl = SPContext.Current.Site;
        siteColl.Audit.DeleteEntries(DateTime.Now.ToLocalTime().AddDays(1));
        siteColl.Audit.Update();
        Response.Redirect(Request.RawUrl);
    }

    protected void cmdRefreshPage_Click(object sender, EventArgs e)
    {
        Response.Redirect(Request.RawUrl);
    }

    /// <summary>
    /// 导出EXCEL文件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void cmdExportToExcel_Click(object sender, EventArgs e)
    {
        HttpContext context=HttpContext.Current;
        SPSite siteCollection = SPContext.Current.Site;
        SPAuditQuery wssQuery = new SPAuditQuery(siteCollection);
        SPAuditEntryCollection auditCol = siteCollection.Audit.GetEntries(wssQuery);
        AuditLogWorkbook log = new AuditLogWorkbook();
        //log.WriteHeaderInfo(list.Title, item.Name, DateTime.Now);
        string eventType;
        foreach (SPAuditEntry entry in auditCol)
        {
            if (entry.SourceName == "CustomViewAuditEvent")
            {
                eventType = "查看审核日志";
            }
            else
            {
                eventType = ConvertEventToLocal(entry.Event);
            }

            //log.WriteEntry(GetUserNameById(entry.UserId, site),
            //                 entry.Occurred.ToLocalTime().ToString(),
            //                 eventType,
            //                 ParseVersionNumber(entry.EventData));
            log.WriteEntry(GetUserNameById(entry.UserId, site),entry.DocLocation,entry.ItemType,
                entry.ItemId,entry.Occurred.ToLocalTime().ToString(),eventType);
        }

        using(Stream strDocument = log.GetDocument())
        {
        context.Response.ClearContent();
        context.Response.ClearHeaders();
        context.Response.AddHeader("content-disposition", "attachment; filename=AudutLog.xlsx");
        context.Response.ContentType = @"application/vnd.-excel.document.12";
        context.Response.ContentEncoding = System.Text.Encoding.UTF8;

        strDocument.Position = 0;
        using(BinaryWriter writer = new BinaryWriter(context.Response.OutputStream))
        {
        BinaryReader reader = new BinaryReader(strDocument);
        writer.Write(reader.ReadBytes((int)strDocument.Length));
        reader.Close();
        writer.Close();
        strDocument.Close();
        }

        context.Response.Flush();
        context.Response.Close();
        context.Response.End();
    }
    
</script>

<asp:Content ID="Content6" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    <asp:Button ID="cmdRefreshPage" runat="server" Text="刷新页面" OnClick="cmdRefreshPage_Click" />
    <asp:Button ID="cmdExportToExcel" runat="server" Text="导出审核日志[Excel]" OnClick="cmdExportToExcel_Click" />
    <asp:Button ID="cmdDeleteAllEntires" runat="server" Text="清除审核日志" OnClick="cmdDeleteAllEntires_Click" />
    <hr />
    <SharePoint:SPGridView ID="SPGridView1" runat="server" AutoGenerateColumns="False"
        Width="100%">
        <AlternatingRowStyle CssClass="ms-alternating" />
    </SharePoint:SPGridView>
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
    审核日志查看器
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea"
    runat="server">
    审核日志
</asp:Content>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -