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

📄 auditlog.ashx

📁 这是一个在SHAREPOINT上开发的一个审核日记的源代码
💻 ASHX
字号:
<%@ 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" %>
<%@ WebHandler Language="C#" Class="AuditLogHandler" %>

using System;
using System.Web;
using System.Data;
using System.IO;
using System.Security;
using System.Xml;
using Microsoft.SharePoint;
using ItemAuditing;

public class AuditLogHandler : IHttpHandler {
  
  public bool IsReusable {
    get { return false; }
  }

  public void ProcessRequest(HttpContext context) {
    SPSite siteCollection = SPContext.Current.Site;
SPWeb site = SPContext.Current.Web;
    SPAuditQuery wssQuery = new SPAuditQuery(siteCollection);

    SPAuditEntryCollection auditCol = siteCollection.Audit.GetEntries(wssQuery);

    AuditLogWorkbook log = new AuditLogWorkbook("allAluditlog");
    //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.DocLocation, entry.ItemType.ToString(),

            entry.ItemId.ToString(), entry.Occurred.ToLocalTime().ToString(), eventType);

    }
    using (Stream strDocument = log.GetDocument())
    {
        context.Response.ClearContent();

        context.Response.ClearHeaders();

        context.Response.AddHeader("content-disposition", "attachment; filename=AuditLog.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();
    }
  }

    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;
    }
    
  string GetUserNameById(int UserId, SPWeb site) {
    try {
      return site.SiteUsers.GetByID(UserId).Name;
    }
    catch {
      return UserId.ToString();
    }
  }

  protected string ParseVersionNumber(string versionString) {
    try {
      int startMajor = versionString.IndexOf("<Major>") + 7;
      int endMajor = versionString.IndexOf("</Major>");
      int lengthMajor = endMajor - startMajor;
      int startMinor = versionString.IndexOf("<Minor>") + 7;
      int endMinor = versionString.IndexOf("</Minor>");
      int lengthMinor = endMinor - startMinor;

      string majorNumber = versionString.Substring(startMajor, lengthMajor);
      string minorNumber = versionString.Substring(startMinor, lengthMinor);

      if (majorNumber == "0" && minorNumber == "-1")
        return "N/A";

      return majorNumber + "." + minorNumber;
    }
    catch {
      return "N/A";
    }
  }
}

⌨️ 快捷键说明

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