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); }