ASP.NET DefaultBodyModelValidator, дающий перечисляемое исключение

Мы используем ASP.NET webapi2 и реализуем множество jsonconverters как часть наших моделей.

Мы редко попадаем ниже исключения, примерно раз в месяц. Мы не используем никаких атрибутов проверки в наших моделях. После просмотра кода много раз не уверен, что его вызывает.

Кто-нибудь сталкивался с подобными исключениями раньше, какие-либо подсказки.

Коллекция была изменена; операция перечисления может не выполняться.

в System.ThrowHelper.ThrowInvalidOperationException(ресурс ExceptionResource) в валидаторах System.Collections.Generic.Dictionary2.Enumerator.MoveNext() at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateElements(IEnumerable model, ValidationContext validationContext) at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable1) в System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(метаданные ModelMetadata, ValidationContext validationContext) в System.Web.Http.Validation.DefaultBodyModelValidator. ValidateNodeAndChildren (метаданные ModelMetadata, ValidationContext validationContext, контейнер объектов, валидаторы IEnumerable1 validators) at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext) at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container, IEnumerable1) в System.Web.Http.ModelBinding.FormatterParameterBinding.d__0.MoveNext() --- Конец трассировки стека из предыдущего местоположения, где было выдано исключение --- в System. Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача) в System.Web.Http.Controllers.HttpActionBinding.d__0.MoveNext() --- Конец трассировки стека из предыдущей место, где было выдано исключение --- в System.Runtime.CompilerServices.Task Awaiter.ThrowForNonSuccess(задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача) в System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() --- Конец трассировки стека из предыдущего места, где было исключение брошено --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) в System.Web.Http.Controllers.ExceptionFilterResult.d__0.MoveNext()


person Pravin    schedule 15.05.2017    source источник


Ответы (2)


Да, эта ошибка обычно означает, что у вас был список чего-то, что сводилось к следующему:

A
B
C

Что-то вставляет что-то в список таким образом, что список изменяется следующим образом:

A
B
D
C

Например. Перечисление выдает исключение, так как оно распознало, что список был изменен; обычно это может происходить в цикле foreach. См. этот пост для получения дополнительной информации: Коллекция была изменена; например, операция перечисления может не выполняться в ArrayList. Использование for - это способ обойти это.

Настраивали ли вы какую-либо часть стратегии привязки модели?

person Brian Mains    schedule 15.05.2017
comment
У меня не было настроенной стратегии привязки модели. - person Pravin; 19.02.2018

Я отключил модуль привязки модели. Так как он нам не нужен. Чтобы избежать этого исключения.

person Pravin    schedule 19.02.2018