Необходимо изменить параметр запроса перед отправкой в ​​API в ядре 2 - PullRequest
0 голосов
/ 10 февраля 2019

Мне нужно расшифровать параметры перед отправкой их в API, и это повторяющаяся задача, поэтому я решил создать фильтр действий, который будет принимать мои параметры, расшифровывать их и затем передавать их в API.Я пытался реализовать его, но, похоже, что-то не получается, поскольку я получаю исключение. Коллекция была изменена;Операция перечисления может не выполняться.

Вот код, я новичок в net core, любая помощь будет оценена

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контроллер

1 Ответ

0 голосов
/ 10 февраля 2019

В цикле foreach коллекция доступна только для чтения, ее нельзя изменить.

Вы можете скопировать коллекцию ActionArguments перед ее повторением, вызвав ToList:

foreach (KeyValuePair<string, object> parameter in context.ActionArguments.ToList())
{
    context.ActionArguments[parameter.Key] = Security.Decrypt(parameter.Value.ToString());
}
...