Я реализую регистратор, который должен фиксировать детали через фильтр действий для записи действий пользователя и поиска неисправностей.
public interface ISessionLogger
{
void LogUserActionSummary(int sessionId, string userActionType);
void LogUserActionDetail(int session, string userActionType, DateTime userActionStartedUtc, long actionDurationInMilliseconds, string queryParams, string referredFrom);
}
Я хотел бы, чтобы queryParams
собирал все ключи и значения из коллекции форм, значения маршрута, параметры действий, вызовы json и строку запроса, что звучит так, как будто мне нужно
filterContext.Controller.ValueProvider
но не представляется возможным пройти через это. Итак, в моем FilterAttribute у меня есть
public void OnActionExecuting(ActionExecutingContext filterContext)
{
var paramList = new List<string>();
if(filterContext.ActionParameters != null)
{
paramList.AddRange(filterContext.ActionParameters.Select(param => String.Format("{0}:{1}", param.Key, param.Value.ToString())));
}
if(filterContext.Controller.ValueProvider != null)
{
//loop through the valueprovider and save the key value pairs to paramList
}
_queryParams = string.Join(",", paramList);
}
Есть ли другой способ добиться этого в методе OnActionExecuting фильтра действий?