Esempio n. 1
0
        public override void OnActionExecuting(HttpActionContext filterContext)
        {
            if (!_isEnable)
            {
                return;
            }

            _startExecute = DateTime.UtcNow;
            lock (_locker)
            {
                try
                {
                    Log onExecLog = new Log
                    {
                        RequestType   = filterContext.Request.Method.ToString(),
                        Response      = "OnActionExecuting Event",
                        ExecutionTime = 0
                    };

                    var currentUser = ((BaseController)filterContext.ControllerContext.Controller).CurrentUser;
                    onExecLog.UserId = currentUser != null ? currentUser.Id : 0;

                    #region Getting query params

                    var queryStringParams = filterContext.Request.GetQueryNameValuePairs();
                    var formParams        = filterContext.ActionArguments;

                    var totalParams = new Dictionary <string, string>();

                    if (queryStringParams != null && queryStringParams.Count() > 0)
                    {
                        foreach (var param in queryStringParams)
                        {
                            try
                            {
                                totalParams.Add(param.Key, param.Value);
                            }
                            catch { }
                        }
                    }
                    if (formParams != null && formParams.Count > 0)
                    {
                        foreach (var param in formParams)
                        {
                            string value = new JavaScriptSerializer().Serialize(param.Value);
                            try
                            {
                                totalParams.Add(param.Key, value);
                            }
                            catch { }
                        }
                    }

                    var actionParameters = string.Join(",", totalParams
                                                       .Where(p => p.Key != "__RequestVerificationToken" && !p.Value.ToLower().Contains("password"))
                                                       .Select(p => string.Concat(p.Key, "=", p.Value)));

                    onExecLog.InputParameters = actionParameters;

                    #endregion

                    AddLog(onExecLog);
                }
                catch (Exception log)
                {
                    _log.Error(log);
                    _messageService.AddErrorMessage(log.Message);
                }
            }
        }