InvalidOperationException lors de l’appel de ResourceManager.GetSsortingng

Mon application jette l’exception à l’occasion de temps en temps:

Type d’exception: InvalidOperationException Message d’exception: la collection a été modifiée; l’opération d’énumération peut ne pas s’exécuter.

Et voici stacktrace

Exception type: InvalidOperationException Exception message: Collection was modified; enumeration operation may not execute. at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, Ssortingng codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalGetSatelliteAssembly(Ssortingng name, CultureInfo culture, Version version, Boolean throwOnFileNotFound, StackCrawlMark& stackMark) at System.Resources.ManifestBasedResourceGroveler.GetSatelliteAssembly(CultureInfo lookForCulture, StackCrawlMark& stackMark) at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark) at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark) at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) at System.Resources.ResourceManager.GetSsortingng(Ssortingng name, CultureInfo culture) 

Et voici mon code:

 public IList MapWithLanguage(IList list) { if (list == null) { return null; } var currentResource = Type.GetType("Fanex.Athena.Models.ViewModel.Menu, Fanex.Athena.Models"); ResourceManager rm = new ResourceManager(currentResource); var newList = new List(); foreach (var func in list) { newList.Add(new Function { Name = rm.GetSsortingng("Menu_" + func.FunctionId), }); } return newList; } 

Tout le monde peut aider, c’est tellement bizarre!

Après une longue période de vérification, j’ai trouvé la cause fondamentale. Et voici mon code cause ci-dessus:

 AppDomain.CurrentDomain.GetAssemblies(). 

Étant donné que cette méthode tente de charger les assemblys générés tels que “web_adg_gfgt_dfd.dll” et qu’ils peuvent être supprimés lorsque IIS recycle le.

Nous avons donc 2 façons de réparer:

1.Filtre “assemblages générés”:

 AppDomain.CurrentDomain.GetAssemblies().Where(i => i.IsDynamic == false).ToList() 

2.En utilisant cette méthode:

 BuildManager.GetReferencedAssemblies().Cast().ToList() 

En réalité InvalidOperationException Message d’exception: La collection a été modifiée; opération d’énumération ne peut pas exécuter signifie:

Nous modifions les éléments de la collection en effectuant une boucle avec foreach.

Je pense que cela devrait résoudre votre problème.

 foreach (var func in list.ToList()) { //Do your stuff }