Пример #1
0
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            //如果记录结束时间,就可能疏漏掉一些被重置的请求
            try
            {
                var MonLog = filterContext.Controller.ViewData[Key] as MonitorLog;
                MonLog.ExecuteEndTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.ffff", DateTimeFormatInfo.InvariantInfo));
                Logger.Info(MonLog.GetLoginfo());
            }
            catch
            {
            }

            var actionName     = filterContext.RouteData.Values["action"].ToString().ToLower();
            var controllerName = filterContext.RouteData.Values["controller"].ToString().ToLower();

            //如果相同,则是用户第一次打开view的请求,此时并没有数据,页面加载完后,会主动通过GetList请求数据,我们只用把第二次记录下来即可
            if (actionName != "index" && !string.IsNullOrEmpty(controllerName))
            {
                var thisIp = Utils.getIp();
                try
                {
                    DAO.BLL.B_Manager_log b_log     = new DAO.BLL.B_Manager_log();
                    DAO.BLL.B_Manager     b_manager = new DAO.BLL.B_Manager();
                    DAO.BLL.B_Navigation  b_nav     = new DAO.BLL.B_Navigation();
                    Domain.Manager_log    model     = new Domain.Manager_log();
                    model.user_id = Convert.ToInt32(filterContext.HttpContext.User.Identity.Name);
                    var m_manager = b_manager.Get(Convert.ToInt32(filterContext.HttpContext.User.Identity.Name));
                    model.user_name   = m_manager.user_name;
                    model.action_type = ActionType(actionName);
                    List <SearchTemplate> st = new List <SearchTemplate>()
                    {
                        new SearchTemplate()
                        {
                            key = "controllerName", value = controllerName, searchType = Common.EnumBase.SearchType.Eq
                        }
                    };
                    model.navigation = b_nav.GetList(st, null)[0];
                    MonitorLog MonLog = new MonitorLog();
                    model.remark   = MonLog.GetCollections(filterContext.HttpContext.Request.Form);
                    model.user_ip  = thisIp;
                    model.add_time = DateTime.Now;
                    b_log.Save(model);
                }
                catch
                {
                }
            }
        }
        /// <summary>
        /// 初始化监控日志
        /// </summary>
        /// <param name="filterContext"></param>
        /// <returns></returns>
        private MonitorLog InitMonitorLog(ActionExecutingContext filterContext)
        {
            var monitorLog = new MonitorLog();

            monitorLog.ExecuteStartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff", DateTimeFormatInfo.InvariantInfo));
            monitorLog.UserId           = filterContext.HttpContext.User.Identity.Name;
            monitorLog.IpAddress        = filterContext.HttpContext.Connection.RemoteIpAddress.ToString();
            monitorLog.ControllerName   = filterContext.RouteData.Values["controller"] as string;
            monitorLog.ActionName       = filterContext.RouteData.Values["action"] as string; var request = filterContext.HttpContext.Request;
            monitorLog.RequestUrl       = $"{request.Host}{request.Path}";
            monitorLog.RequestType      = request.Method;

            if (request.Method.ToLower() == "get")
            {
                if (request.QueryString.HasValue)
                {
                    monitorLog.QueryString = request.QueryString.ToString();
                }
            }
            else
            {
                try
                {
                    if (request.ContentLength > 0)
                    {
                        var body = request.GetRawBodyString();
                        monitorLog.FormBody = body;
                    }
                    else if (request.QueryString.HasValue)
                    {
                        monitorLog.FormBody = request.QueryString.Value;
                    }
                    else
                    {
                        if (request.Form.Count > 0)
                        {
                            monitorLog.FormBody = monitorLog.GetCollections((FormCollection)request.Form);
                        }
                    }
                }
                catch (Exception) { }
            }
            return(monitorLog);
        }