2017-05-15 13 views
1

우리는 ASP.NET webapi2를 사용하고 jsonconverters를 우리 모델의 일부로 구현했습니다.ASP.NET DefaultBodyModelValidator 열거 형 예외 적용

우리는 거의 예외적 인 경우가 거의 없으며 한 달에 한 번 정도입니다. 우리 모델에서는 유효성 검사 속성을 사용하지 않습니다. 코드를 여러 번 검토 한 결과 무엇이 원인인지 알 수 없습니다.

누구나 전에 비슷한 예외를 겪었습니까?

컬렉션이 수정되었습니다. 열거 연산이 실행되지 않을 수 있습니다.

System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties에서 System.Collections.Generic.Dictionary 2.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, IEnumerable 1 검사기에 System.ThrowHelper.ThrowInvalidOperationException (ExceptionResource 자원)) (ModelMetadata 메타 ValidationContext validationContext)에서

에서 System.Web.Http.ModelBinding.FormatterParameterBinding.d__0.MoveNext()에서 System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren (ModelMetadata 메타 ValidationContext validationContext 오브젝트 용기 IEnumerable을 검증 1 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, IEnumerable 1) --- 종료 예외가 (작업 작업) (작업 작업) System.Web에 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification에서 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess에서 --- 던져진 이전 위치에서 스택 추적 .Http.Controllers.HttpActionBinding.d__0.MoveNext() --- 예외가 throw 된 이전 위치의 스택 추적 끝 --- 에서 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (작업 작업) 시스템에. Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (작업 작업)에서 System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() --- System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification에서 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (작업 작업) (작업 작업)에서 예외가 발생 된 이전 위치 ---에서 스택 추적의 끝

A 
B 
C 

: System.Web.Http.Controllers.ExceptionFilterResult.d__0.MoveNext()에서

답변

0

모델 바인딩 모듈을 사용할 수 없습니다. 우리는 그것을 필요로하지 않습니다. 이 예외를 피하려면.

0

예, 그 오류는 일반적으로 다음에 달했다 무언가의 목록을 가지고 말을 의미 무언가가 존재한다. 다음과 같이 목록을 수정하는 방식으로 목록에 무언가를 표시합니다.

A 
B 
D 
C 

예를 들어. 리스트가 변경된 것을 인식했기 때문에 열거는 예외를 throw합니다. 이것은 일반적으로 foreach 루프에서 발생할 수 있습니다. 자세한 내용은이 게시물을 참조하십시오 : Collection was modified; enumeration operation may not execute in ArrayList을 예로 들어주십시오. for를 사용하면 주위를 둘러 볼 수 있습니다.

모델 바인딩 전략의 일부를 사용자 지정 했습니까?

+0

모델 바인딩 전략을 사용자 지정하지 않았습니다. – Pravin