ユーザー アクティビティの記録と障害検出のために、アクション フィルターを介して詳細をキャプチャするロガーを実装しています。
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 メソッド内でこれを達成する別の方法はありますか?