我采取的是应通过对用户行为记录和故障查找的目的的动作捕捉过滤器的详细信息的记录器。
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方法中实现这一目标?