#c# #asp.net #asp.net-web-api
Вопрос:
мы делаем вызов API и получаем ответ от скрипта. при его получении появляется ошибка
{
"ClassName": "System.InvalidOperationException",
"Message": "Collection was modified; enumeration operation may not execute."
}
самое странное, что я не получаю эту ошибку регулярно, если я делаю 50 звонков между ними, я получаю эту ошибку (периодически), есть идеи ?
обновлено: это происходит после того, как мы получаем ответ от API, мы обрабатываем наш динамический запрос на основе ответа api следующим образом
private JToken GetPEmail(dynamic verb, dynamic inputProfile)
{
verb.Log("GetProfileEmail Method", "Start", null, null, null, null, false);
var emailList = new System.Collections.Generic.List<dynamic>();// creating custom response
foreach (var item in inputProfile.Emails)
{
verb.Log("Get EmailId for " item, "start", null, null, null, null, false);
var pID = GetEmailId(verb, Convert.ToString(item.EmailAddress)); // db call
emailList.Add(new
{
EmailAddress = item.Email,
IsPreferred = item.IsP,
EmailPOCID = Convert.ToString(pID)
});
verb.Log("Get EmailId for " item, "End", Convert.ToString(pID), null, null, null, false);
}
Комментарии:
1. Вы изменяете коллекцию (добавляя или удаляя из нее элементы) во время итерации по ней (
foreach
например , с помощью). Пожалуйста, предоставьте свой код API-сервера.2. @Лама хорошо, но почему он приходит с перерывами , я имею в виду, что он должен приходить с каждым звонком правильно
3. Как я могу ответить на этот вопрос? Это зависит от кода вашего сервера API. Возможно, коллекция изменяется только в определенных сценариях.
4. @Llama обновил вопрос
5. Я ожидаю, что
inputProfile.Emails
это изменится, пока вы будете повторять это. Предположительно, где-то внеGetPEmail
вас вы изменяете его одновременно сGetPEmail
запуском.