2017-05-15 12 views
1

私たちはASP.NET webapi2を使用し、多くのjsonconvertersをモデルの一部として実装しています。ASP.NET DefaultBodyModelValidator列挙可能な例外を与えます

ほとんど例外ではなく、月に1回程度です。 このモデルでは、検証属性は使用していません。 コードが何度も再確認された後、何が原因であるのか不明です。

誰も手掛かりになる前に、同様の例外に直面していますか?

コレクションが変更されました。列挙操作が実行されないことがあります。

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() ---例外がスローされた前の場所からのスタックトレースの終了--- で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(タスク タスク)(タスク タスク)で、例外がスローされた以前の位置---からスタックトレースの終わり System.Web.Http.Controllers.ExceptionFilterResult.d__0.MoveNext()

答えて

0

モデルバインディングモジュールを無効にしました。我々はそれを必要としないので。この例外を回避するには

0

の次に達し、何かのリストを持っていたと言うはい、そのエラーは、通常の手段:

A 
B 
C 

何かが存在するそのようにリストを変更するような方法で何かをリストに追加すると、次のようになります。リストが変更されたことを認識したため、列挙は例外をスローします。これは通常、foreachループで発生します。詳細については、この記事を参照してください:Collection was modified; enumeration operation may not execute in ArrayListを例にしてください。 forを使用すると、それを回避する方法です。

モデルバインディング戦略のどの部分をカスタマイズしましたか?

+0

私はモデル結合戦略をカスタマイズしていませんでした。 – Pravin

関連する問題