我需要将它们发送到API之前解密的参数,这是一个重复性的任务,所以我决定创建一个动作过滤器,其将采取我的参数,解密它们,然后将它们传递到API。我试图实现它,但事情似乎我得到异常“集合已修改失败;枚举操作可能不会执行。
下面是代码,我是新来的网络核心,任何帮助,将不胜感激
public override void OnActionExecuting(ActionExecutingContext context)
{
IDictionary<string, object> parameters = context.ActionArguments;
foreach (KeyValuePair<string, object> parameter in parameters)
{
context.ActionArguments[parameter.Key] = Security.Decrypt(parameter.Value.ToString());
}
}
以及如何可以修改的参数传递给API控制器?
在foreach
循环集合是只读的,你不能修改它。
你可以通过调用ActionArguments
通过它迭代之前复制ToList
集合:
foreach (KeyValuePair<string, object> parameter in context.ActionArguments.ToList())
{
context.ActionArguments[parameter.Key] = Security.Decrypt(parameter.Value.ToString());
}