public override void OnActionExecuting(HttpActionContext actionContext) { try { var queryParams = actionContext.Request.GetQueryNameValuePairs() .Select(a => new QueryStringValueEmbedded { Key = a.Key, Value = a.Value }) .ToMList(); var request = new RestLogEntity { Url = actionContext.Request.RequestUri.ToString(), QueryString = queryParams, User = UserHolder.Current?.ToLite(), Controller = actionContext.ControllerContext.Controller.ToString(), Action = actionContext.ActionDescriptor.ActionName, StartDate = TimeZoneManager.Now, UserHostAddress = SignumExceptionFilterAttribute.GetClientIp(actionContext.Request), UserHostName = SignumExceptionFilterAttribute.GetClientName(actionContext.Request), Referrer = actionContext.Request.Headers.Referrer?.ToString(), RequestBody = (string)(actionContext.Request.Properties.ContainsKey(SignumAuthenticationFilterAttribute.SavedRequestKey) ? actionContext.Request.Properties[SignumAuthenticationFilterAttribute.SavedRequestKey] : null) }; actionContext.ControllerContext.RouteData.Values.Add(typeof(RestLogEntity).FullName, request); } catch (Exception e) { e.LogException(); } }
public override void OnActionExecuting(ActionExecutingContext context) { try { var request = context.HttpContext.Request; context.HttpContext.Items[OriginalResponseStreamKey] = context.HttpContext.Response.Body; context.HttpContext.Response.Body = new MemoryStream(); var connection = context.HttpContext.Features.Get <IHttpConnectionFeature>(); var queryParams = context.HttpContext.Request.Query .Select(a => new QueryStringValueEmbedded { Key = a.Key, Value = a.Value }) .ToMList(); var restLog = new RestLogEntity { AllowReplay = this.AllowReplay, HttpMethod = request.Method.ToString(), Url = request.Path.ToString(), QueryString = queryParams, User = UserHolder.Current?.ToLite(), Controller = context.Controller.GetType().FullName, ControllerName = context.Controller.GetType().Name, Action = ((ControllerActionDescriptor)context.ActionDescriptor).ActionName, MachineName = System.Environment.MachineName, ApplicationName = AppDomain.CurrentDomain.FriendlyName, StartDate = TimeZoneManager.Now, UserHostAddress = connection.RemoteIpAddress.ToString(), UserHostName = request.Host.Value, Referrer = request.Headers["Referrer"].ToString(), RequestBody = GetRequestBody(context.HttpContext.Request) //(string)(actionContext.Request.Properties.ContainsKey(SignumAuthenticationFilterAttribute.SavedRequestKey) ? //actionContext.Request.Properties[SignumAuthenticationFilterAttribute.SavedRequestKey] : null) }; context.HttpContext.Items.Add(typeof(RestLogEntity).FullName, restLog); } catch (Exception e) { e.LogException(); } }