导致错误的原因是"枚举器实例化后收集被修改了"?

dtc*_*dtc 2 .net asp.net web-config

最近我遇到了错误"集合在枚举器实例化后被修改",我不明白为什么.该错误指定web.config.是什么导致这个错误?

我无法重现它.错误弹出很少和随机.我的程序接收一个文件并对其进行处理.当我收到此错误时,我只需重新运行该程序即可.

我正在考虑在我的程序运行时修改我的web.config?我的程序确实连接到几个数据库(sql,db2和oracle),因此有时可能需要几秒钟才能完成.在那段时间内触摸web.config的事情是原因还是我在看错了区域?

编辑:

以下是有关错误的一些其他信息:

Type : System.Configuration.ConfigurationErrorsException, System.Configuration,    Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Message : An error occurred loading a configuration file: Collection was modified after the enumerator was instantiated. (<path>\web.config line 59)
Source : System.Configuration
Help link :
BareMessage : An error occurred loading a configuration file: Collection was modified after the enumerator was instantiated.
Filename : <path>\web.config
Line : 59
Errors : System.Configuration.ConfigurationException[]
Data : System.Collections.ListDictionaryInternal
Run Code Online (Sandbox Code Playgroud)

查看堆栈跟踪时,我尝试从web.config读取连接字符串,第59行包含正在读取的连接字符串信息.

这仍然看起来像是由于在循环中修改集合吗?

我确实将项目添加到集合中,但不是在循环中,而是在堆栈跟踪显示的位置附近.我不会从集合中删除任何项目.

Ode*_*ded 10

迭代时(或者在foreach中),您无法更改集合.

因此,在foreach块中添加或删除集合中的项将导致此错误.

作为web.config中的错误,可能是您要添加在别处定义的重复键,或者您尝试在代码中动态更改配置.

  • +而是使用整数索引向后遍历集合.这将允许您在必要时进行删除. (3认同)