需要在核心2发送给API之前修改查询参数

问题描述 投票:1回答:1

我需要将它们发送到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控制器?

c# asp.net api action-filter
1个回答
0
投票

foreach循环集合是只读的,你不能修改它。

你可以通过调用ActionArguments通过它迭代之前复制ToList集合:

foreach (KeyValuePair<string, object> parameter in context.ActionArguments.ToList())
{
    context.ActionArguments[parameter.Key] = Security.Decrypt(parameter.Value.ToString());
}
© www.soinside.com 2019 - 2024. All rights reserved.